c = pString[i]; if((c >= ‘a’) && (c <= ‘z’)) pString[i] = c-0x20; //…end of loop Các bạn thấy đó , mọi thứ đã sáng tỏ và dễ hiểu hơn rất nhiều. Bây giờ chúng ta đã bắt đầu hiểu những gì đoạn code này đang làm. Chúng ta hãy sắp xếp lại chúng lại thành đoạn code cuối cùng như sau : void SomeFunction(char* pString) { int i; //Local variables have to be declared unsigned char c; //at the start of the function. for(i = 0; i < lstrlenA(pString); i++) { c = pString[i]; if((c >= ‘a’) && (c <= ‘z’)) pString[i] = c-0x20; } } Cuối cùng chúng ta đã có được một đoạn code ngắn gọn hơn nhiều so với những gì chúng ta đã đọc với ASM code.Nó đã được chuyển đổi hoàn toàn sang ngôn ngữ C, nhiệm vụ của nó là lấy từng kí tự từ String đầu vào, và nếu kí tự đó nằm trong khoảng ‘a’ và ‘z’ (tức là các kí tự chữ cái thường) nó sẽ được trừ đi cho 0x20h. Mà phép trừ này biểu diễn cho quá trình chúng ta chuyển đổi nó từ chữ cái thường thành chữ cái hoa. Do đó chúng ta sẽ đặt tên cho hàm này một cách gợi nhớ hơn là ToUpperCase . V. Lời kết Toàn bộ quá trình mà tôi và các bạn đã làm ở trên được gọi với cái tên : RE (Reverse Engineering). Chúng ta thấy rằng nó không phải là một việc làm quá khó, nhưng nó đòi hỏi một lòng kiên nhẫn và một kiến thức nền tảng vững chắc. Để chỉ khi ta chỉ nhìn lướt qua đoạn code ta có thể hiểu ngay được nó làm gì. Có một công cụ giúp chúng ta đơn giản hóa công việc đi rất nhiều, một trong số đ ó chính là IDA mà tôi đã giới thiệu với anh em.Hi vọng bài viết này của tôi sẽ phần nào giúp mọi người hiểu được quá trình phân tích một đoạn code như thế nào, chỉ có một lời khuyên duy nhất đó là các bạn hãy thực hành thật nhiều mới có thể đạt được những điều mình mong muốn. Qua đây tôi cũng xin cảm ơn tác giả Webbit đã cho chúng ta một bài viết rất hay và bổ ích. Thời gian trôi đi rất nhanh Vì sao ta cứ mãi đứng yên Ngoài kia bóng tối đang dần buông Lại một ngày nữa sắp qua mất rồi. PS : Hi vọng anh TQN, Thug và light.phoenix có thời gian viết vài bài cho anh em mở rộng tầm mắt J Best Regards _[Kienmanowar]_ ++ ==[ Greatz Thanks To ]== ++ My family, Computer_Angel, Moonbaby , Zombie_Deathman, Littleboy, Benina, QHQCrker, the_Lighthouse, Merc, Hoadongnoi, Nini all REA‘s members, TQN, HacNho, RongChauA, Deux, tlandn, light.phoenix, dqtln, ARTEAM all my friend, and YOU. ++ ==[ Special Thanks To ]== ++ - coruso_trac, pat, trm_tr. Thug4lif3, vn_blackrain, v v and all brothers in VSEC ++ ==[ Thanks To ]== ++ iamidiot, WhyNotBar, trickyboy, dzungltvn, takada,hurt_heart, haule_nth,hytkl v v các bạn đã đóng góp rất nhiều cho REA. Hi vọng các bạn sẽ tiếp tục phát huy J >>>> If you have any suggestions, comments or corrections email me: kienbigmummy[at]gmail.com Appendix A1 : Appendix A2 : Appendix A3 : I. Introduction: Về phương pháp Unpack Armadillo 4.xxthì loạt Tut của anh Hacnho đã chỉ dẫn rất cặn kẽ. Nhưng để thành công thì bạn cần có sự kiên nhẫn và lòng đam mê. Hôm nay, Em xin giới thiệu các tool có sẵn để Unpack nhanh các Soft pack bằng Armadillo mà ko cần phải OllyDBG với nhiều câu lệnh phức tạp mà vẫn thành công. Tut này viết giành riêng cho Newbie nên mấy đại ca Try Arma bỏ qua hen!! Hiện nay, chúng ta tạm có 2 tool hỗ trợ Unpack Armadillo đó là: ArmaDumper 1.0 by Avatar: tool này hỗ trợ unpack dạng Standard Protection+ Code Splicing+ IAT Elimination lâu lâu còn luộc được Debug blocker Nhưng với Copy Mem IIthì bó tay hoàn toàn ArmadilloDumpers by Deroko: Còn Tool này thì Đã lém các Bác xem: Debug Blocker and Copy Mem II dumpers dumper1.exe - Debug Blocker oep locator and import fixer dumper2.exe - Copy Mem II dumper and import fixer If you have codesplices or Eliminated IAT use ArmInline to fix em. Both dumpers are console applications. usage: dumper1 progy.exe dumper2 progy.exe II. Tools: · Tool cần dùng § Armadillo FindProtected V1.2 § ArmadilloDumpers by deroko § ImportREC 1.6 § ArmInline v0.95 § PEiD 0.94 § CFF Explorer IV § OllyDGB 1.1 · Target: Ace Utilitie 3.0 (Standard Protection) hxxp://www.acelogix.com/ Automation Anywhere 2.52 (CopyMemII + Debugblocker+ Nanomites) hxxp://www.tethyssolutions.com/ III. Unpacking: #TUT1: Sử dụng ArmaDumper 1.0 by Avatar _ Đầu tiên chúng ta sử em Ace Utilitie 3.0. Dùng PEiD 0.94 quét coi Soft có bị pack hay ko và pack loại nào? _Như vậy là ta đã xác định được Soft được Pack bằng Armadillo. Để biết chính xác trong File Pack có tùy chọn Standard Protectionhay CopyMemII + Debugblocker…để biết đường mà unpack thì chúng ta dùng Armadillo FindProtected V1.3 _Hehe dạy là Cu này chỉ cóStandard Protection. Nói thêm, Tool này còn có khả năng Detach Debugblocker (nếu có) gi ống ArmaDetach 1.1. _Giờ thì chạy ArmaDumper 1.0 và chọn như hình dưới _ và chọn file “au.exe” _Haha…ArmaDumper đã xử lý dùm ta công việc nhàm chán là Patch Magic Jump để có bản IAT Full. _Giờ thì mở thêm ImportREC, chọn PID cho chính xác và điền OEP=0007BFBA, Nhấn IAT AutoSearch _ nhấn Get Imports à Show Valid _Nhấn Chuột phải chọn như hình _Nhấn Fix Dump chọn File “Unpacked.exe” và chạy thử File” Unpacked_.exe” _Hehe, dạy là sao… ta cần nhớ dòng thông báo này …huhu Load File Unpacked_.exe vào Olly và ta dừng ở đây _Nhấp chuột phải chọn như hình dưới _Tìm chuỗi “ Is the Program protected” và chúng ta ở đây _Nhấp đôi vào dòng đó ta tới đây: _Nhìn lên trên có 1 lệnh nhảy và ta patch nó như sau: _Save File và đặt tên là Fix_unpacked.exe . Ace Utilitie 3.0 (Standard Protection) hxxp://www.acelogix.com/ Automation Anywhere 2 .52 (CopyMemII + Debugblocker+ Nanomites) hxxp://www.tethyssolutions.com/ III. Unpacking: