Reverse Engineering cho mọi người
(0xinfection.github.io)- Reverse Engineering For Everyone là bộ sưu tập tutorial được thiết kế để những người mới học reverse engineering có thể theo dõi các khái niệm và luồng thực hành
- Reverse engineering là quá trình phân tách một tạo tác để làm lộ ra thiết kế, kiến trúc, code hoặc tri thức
- Giáo trình bao gồm x86, x64, ARM-32, ARM-64, nhắm đến cả người mới bắt đầu lẫn độc giả muốn ôn lại các khái niệm
- Nội dung được cấu trúc để có thể bắt đầu ngay cả khi chưa biết gì, giúp học từng bước đến nền tảng trung cấp của reverse engineering
- Toàn bộ tutorial có thể tải dưới dạng PDF và MOBI, và khi có tutorial mới được thêm vào, phiên bản ebook cũng sẽ được tự động cập nhật
Mục tiêu của reverse engineering
- Reverse engineering còn được gọi là backwards engineering hoặc back engineering
- Đây là quá trình phân tách tạo tác mục tiêu để làm lộ ra thiết kế, kiến trúc, code bên trong, hoặc trích xuất tri thức
- Nó tương tự nghiên cứu khoa học, nhưng khác ở chỗ nghiên cứu khoa học nhắm đến các hiện tượng tự nhiên
- Bộ tutorial này tập trung vào việc giúp học reverse engineering theo cách đơn giản nhất có thể
Giáo trình và đối tượng học
- Các khóa học chính được đề cập như sau
- Nhắm đến cả người mới bắt đầu muốn học reversing và độc giả muốn ôn lại những khái niệm đã học
- Người mới bắt đầu có thể học từ trạng thái chưa có kiến thức nền tảng đến nền tảng trung cấp của reverse engineering
- Có thể dùng sidebar để kiểm tra các phần đã được đề cập đến nay và ôn lại những khái niệm cần thiết
1 bình luận
Ý kiến trên Hacker News
Có thể làm reverse engineering mà không nhất thiết phải nhìn trực tiếp vào chính đối tượng đó
Đây là bài viết giải thích cách Andrew Tridgell reverse engineer giao thức SMB của Microsoft bằng “French cafe technique”: https://www.samba.org/ftp/tridge/misc/french_cafe.txt
Tridge cũng đã reverse engineer BitKeeper, phần mềm độc quyền từng được Linus dùng một thời gian để host việc phát triển kernel Linux. Ông phát hiện ra rằng nếu telnet tới địa chỉ:cổng của BitKeeper thay vì dùng client chuyên dụng, có thể nhập
help, và nó sẽ in ra danh sách các lệnh có thể thửBằng cách truy vấn kho lưu trữ với các lệnh đó, ông có thể hiểu toàn bộ cấu trúc dữ liệu bên trong mà không cần dùng phần mềm độc quyền hay disassemble nó; chính vụ reverse engineering này đã khiến Larry McVoy, chủ sở hữu BitKeeper, rút quyền sử dụng của cộng đồng Linux, từ đó Linus tạo ra git
Việc
helpin ra danh sách lệnh là một quyết định kỹ thuật/UI khá tốt của các nhà phát triển BitKeeper, nhưng tôi lo bài học rút ra từ đây lại thành “đừng làm phần mềm quá thân thiện”Ngoài ra, nói chuyện với một phần mềm qua mạng chẳng phải cũng rõ ràng là đang “sử dụng” phần mềm đó sao
Tôi chưa từng nghĩ reverse engineering là lĩnh vực học bằng sách. Từ nhỏ tôi đều học bằng cách tự mày mò làm thử
Tôi đã học cách quét và chỉnh sửa bộ nhớ tiến trình game bằng Cheat Engine, đọc và phát lại packet MMO để thử cheat, tạo DLL và hook rồi inject vào tiến trình, và làm bản vá executable để giải các bài crackme
Từ việc đụng vào phần mềm thật cần license key để khiến nó không còn cần key hoặc chấp nhận bất kỳ key nào, đến phân tích các định dạng nhị phân như file save game để phục vụ cheat, cuối cùng tôi đã dùng chính kỹ năng và kiến thức đó để có công việc thật và kiếm tiền
Trên thực tế đây gần như là kiểu việc bạn просто phải tự thử và bỏ thời gian vào. Tutorial trong bài gốc quá rời rạc, cố bao trùm quá nhiều thứ nhưng lại không thực sự dạy được kỹ năng reverse engineering vượt quá mức mà đa số người ta có thể tự nắm sau vài giờ mày mò
Trong khi đó beginners.re thì đồ sộ nhưng sâu hơn nhiều và đi theo từng bước; còn về bài tập thực hành thì crackmes có thể phù hợp hơn
Trong một dự án reverse engineering game đang làm, tôi đã liên lạc với một modder tự học không biết lập trình; chỉ sau vài cuộc gọi Discord cùng xem dự án Ghidra và giải thích các nền tảng cơ bản của kỹ nghệ chương trình máy tính, anh ấy đã học được nhiều hơn hẳn so với thời chỉ lật bit bằng Cheat Engine
Sau đó anh ấy đã tái tạo một bản mod khá tham vọng vốn chỉ từng được công bố trong video YouTube 15 năm trước mà chưa từng được phát hành; ban đầu tôi chỉ giúp định hướng, nhưng sau khi hiểu các mảnh ghép ăn khớp với nhau thế nào thì ở phần tiếp theo anh ấy đã tự mình hiện thực cùng một kiểu mod
Kinh nghiệm kỹ thuật cho bạn góc nhìn khi làm reverse engineering
Cũng cần nhớ là sách thì nhiều, nhưng sách “hay” chỉ đếm trên đầu ngón tay
Chỉ cần đọc 5 phút là đã thấy quá nhiều lỗi, khái niệm bị hiểu sai và giải thích hoàn toàn sai, nên khó mà khuyên đọc. Có vẻ rõ ràng đây là bài của một người nghiệp dư, ít kinh nghiệm thực tế trong lĩnh vực này
Tài liệu tốt hơn có Secrets of Reverse Engineering của Eldad Eilam, bên Windows thì có Practical Reverse Engineering, còn mức rất cơ bản thì có Computer Organization and Design của Patterson
Với người mới tiếp cận chủ đề này, nó có vẻ là một tổng quan cấp cao khá ổn
Cũng có link này cho tài liệu sâu hơn: https://github.com/mytechnotalent/Reverse-Engineering
Sửa: ôi, có vẻ phần lớn lại dẫn ngược về bài gốc
Tôi nhớ lại thời đọc các tutorial reversing trên searchlores.org và fravia.com
Giờ chúng nằm trong web archive: https://web.archive.org/web/20191201105759/http://search.lor...
Reverse engineering Java cũng thú vị. Đặc biệt là các ứng dụng Android khả nghi dùng giao thức Bluetooth kỳ quặc để điều khiển đồ gia dụng
Tôi biết người đã viết hướng dẫn này. Thấy nó lên HN cũng vui, và nếu có góp ý cụ thể thì tôi có thể chuyển lại
Nội dung quá thiếu các yếu tố thu hút người tham gia và hình minh họa. Quá nhiều giải thích và những bức tường chữ, chỉ riêng điều đó thôi cũng đủ khiến nó chưa phải tài liệu “cho tất cả mọi người”
Ví dụ phần giải thích phân tích tĩnh/phân tích động ở phần 2, phần giới thiệu IDA và disassembler, hay phần mô tả kịch bản ABC Biochemicals đều có thể viết ngắn gọn hơn nhiều
Có thể rút lại thành kiểu: “Phân tích malware có hai kỹ thuật cơ bản là phân tích tĩnh và phân tích động. Phân tích tĩnh kiểm tra file thực thi mà không chạy nó, và sẽ không được bàn ở đây mà để cho phần sau. Phân tích động phân tích binary malware đang chạy bằng disassembler và debugger. Disassembler chuyển binary thực thi thành các lệnh hợp ngữ có thể debug và thao tác. Có các công cụ như Hopper, OllyDbg và IDA; IDA là một disassembler kiêm debugger phổ biến hỗ trợ nhiều nền tảng và bộ xử lý. Reverse engineering là lĩnh vực rộng hơn nhiều so với phân tích malware. Cuối cùng chúng ta sẽ dùng IDA trong một kịch bản giả định về việc hack có đạo đức hệ thống điều khiển cửa chống đạn tại phòng thí nghiệm sinh hóa nhạy cảm hư cấu tên ABC Biochemicals. Đây là dự án cơ bản, nhưng cho thấy quá trình reverse engineer một binary hộp đen và tìm giải pháp thiết kế mã an toàn hơn. Ở bài học tiếp theo sẽ đề cập nhiều loại malware khác nhau”
Link sách không mở được với tôi, có phải nó đang dính bom lưu lượng từ HN không?