Trao đổi với tôi

http://www.buidao.com

1/3/10

[Reverse] How to write a disassembler (Part 1)

How to write a disassembler

An implementation example of machine code decoder: an open ended implementation.

Tsuyoshi Watanabe

Benina biên dịch

Bạn có thể dowload source:

http://www.spiralspace.com/Depot/Projects/Disassembler/Release.zip



Screenshot

Tài liệu này là gì?

Tài liệu này mô tả cách thiết kế và thực hiện một công cụ mà nó lấy tập tin thực thi dạng 32-bit Windows và disassembles mã máy thô của các tập tin thực thi về dạng hình thức đại diện mà con người có thể đọc được như "assembly language", và hiển thị nó cho người dùng

Mục đích của tài liệu này là gì?

Bên cạnh việc phục vụ lưu trữ cho tôi về những gì tôi nghiên cứu, tài liệu này chủ yếu được tạo ra cho những người nào thích thú trong việc học như thế nào để viết một disassembler.
Tôi cũng tạo sẵn ra tất cả các source files để bạn tải về. Tôi có ghi chú thích rất nhiều trong mã nguồn, nhưng một số phần của project có thể vẫn còn khó hiểu nếu không có một kiến thức tổng quát, do đó, tài liệu này hổ trợ cho điều đó.

Rất tiếc là tôi ko thể để mô tả đầy đủ mọi chi tiết về cách viết một disassembler từ A đến Z. Hơn nữa, tôi không cho rằng việc thiết kế và triển khai thực hiện project này của tôi là "tốt nhất". Thực tế, dự án này đã giúp tôi học tập hoàn thiện bản thân nhiều hơn là việc trình bày cho người khác. Ý định ban đầu của tôi là chỉ viết một
framework cho project này, rồi xuất bản nó để người khác có thể mở rộng thêm nó.

"Open ended implementation"

Phần này là "open dended impelmentation". Điều này có nghĩa là tôi muốn nói rằng, như bạn thấy bạn sẽ học trong tài liệu này sau này, thực hiện của tôi về cơ bản là không đầy đủ, và bạn được chào đón khi dùng một phần mã trong đó, hoàn thiện phần mà tôi bỏ sót. Để bắt đầu làm việc trên phần mà tôi bỏ sót, tất cả những gì bạn cần làm là sao chép một vài DLL (và các tập tin tiêu đề (hearder) liên quan và các tập tin lib) và bắt đầu viết cho riêng bạn bộ “giải mã" (decoder). Xem chi tiết thêm trong tài liệu.

Hy vọng cuối cùng là Tôi cũng sẽ hoàn thành dự án này ...

Chú ý:

Tôi không bảo đảm rằng thiết kế của tôi là hiệu quả nhất và chính xác. Thật vậy, thiết kế của tôi chỉ phản ánh như thế nào tôi giải quyết vấn đề, và nó phải khác so với bạn.

Tôi làm project đã sử dụng:

  • Using Microsoft Visual C++ as the compiler
  • Executable file that can be disassembed is compiled by Microsoft tool (you can change this easily).
  • It is only for 32-bit executable.

RefLink: http://www.spiralspace.com/Depot/Projects/Disassembler/Default.aspx

1/2010