Armadillo 4.xx - Standard Protection other way

Intro _Tối qua buồn quá, với lại hết áo quần để mặc (mấy bữa nay dưới này mưa quá, phơi đồ không khô) tui xách xe chạy 120 cây về Tiền Giang lấy đồ. Sẵn dịp lên REA nghía qua cái topic thì thấy có một kiểu protect mà các bố ARTeam cũng vắt giò lên chạy là Import Table Elimination. Cực chua nhưng unpack được thì cực khoái. Sáng mai tui lại chạy xuống dưới, tranh thủ cái bittorent hgame sắp down xong, tui buồn buồn nên viết cái series#6 này. Dù khi viết dòng này tui chưa hình dung tut sẽ viết cái tut này như thế nào nhưng chắc rằng khi đọc xong tut này bạn sẽ giải đáp được những thắc mắc mấy hôm nay post lên topic này, và chắc chắn tui sẽ khổ vì những thắc mắc mới của các bạn . Cách unpack này bên TBN và EN không ai thích dùng vì sao tui chả biết nhưng mấy pa Trung Quốc khoái dùng. Tui vốn sính ngoại nên cũng không thích lắm nhưng bực cái chỗ vì bít vài chữ TQ nên để trước mặt mà không đọc thì phí, giống như có con bé nào tự dưng tới chỗ các bạn nhờ “Bạn gì ơi, bắt giùm mình con kiến trong áo cái  ”, chẳng lẽ bạn ngồi im phải không . Khửa khửa, ta bắt đầu thôi, bàn tới vụ này sao tui ngứa ngáy như có kiến cắn ấy, calme down, calme down! _Để nhận biết dấu hiệu của Armadillo's Code Splicing Feature là: 003C53D5 8985 DCAEFFFF MOV DWORD PTR SS:[EBP+FFFFAEDC],EAX #8985????????83BD????????0074??#

pdf23 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 2097 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Armadillo 4.xx - Standard Protection other way, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Armadillo-Góp nhặt cát đá Phần 6: Armadillo 4.xx- Standard Protection other way I. Intro _Tối qua buồn quá, với lại hết áo quần để mặc (mấy bữa nay dưới này mưa quá, phơi đồ không khô) tui xách xe chạy 120 cây về Tiền Giang lấy đồ. Sẵn dịp lên REA nghía qua cái topic thì thấy có một kiểu protect mà các bố ARTeam cũng vắt giò lên chạy là Import Table Elimination. Cực chua nhưng unpack được thì cực khoái. Sáng mai tui lại chạy xuống dưới, tranh thủ cái bittorent hgame sắp down xong, tui buồn buồn nên viết cái series#6 này. Dù khi viết dòng này tui chưa hình dung tut sẽ viết cái tut này như thế nào nhưng chắc rằng khi đọc xong tut này bạn sẽ giải đáp được những thắc mắc mấy hôm nay post lên topic này, và chắc chắn tui sẽ khổ vì những thắc mắc mới của các bạn . Cách unpack này bên TBN và EN không ai thích dùng vì sao tui chả biết nhưng mấy pa Trung Quốc khoái dùng. Tui vốn sính ngoại nên cũng không thích lắm nhưng bực cái chỗ vì bít vài chữ TQ nên để trước mặt mà không đọc thì phí, giống như có con bé nào tự dưng tới chỗ các bạn nhờ “Bạn gì ơi, bắt giùm mình con kiến trong áo cái …”, chẳng lẽ bạn ngồi im phải không :D. Khửa khửa, ta bắt đầu thôi, bàn tới vụ này sao tui ngứa ngáy như có kiến cắn ấy, calme down, calme down! _Để nhận biết dấu hiệu của Armadillo's Code Splicing Feature là: 003C53D5 8985 DCAEFFFF MOV DWORD PTR SS:[EBP+FFFFAEDC],EAX #8985????????83BD????????0074??# _Dấu hiệu nhận biết của Armadillo's Import Elimination Feature thì khó nhận ra nhưng theo kinh nghiệm của tui khi bạn gặp ba trường hợp như sau, đích thị là Armadillo's Import Elimination Feature và Code Splicing: II. Tools _Công cụ cần có chỉ là: 1.OllyDBG - The best config debugger for ArmMUP by hacnho. 2.LordPE 1.4 Deluxe 3.Import REConstructor 1.6 Final 4.API Address 1.0 III. Unpacking Target#1: PowerPoint to Flash 1.67-Armadillo 4.xx+IAT Elimination _Config plugin: _Load target lên OllyDBG: _Ta cần kiếm một mutex, đặt một breakpoint tại hàm OpenMutexA: BP OpenMutexA, nhấn F9: _Như vậy ta có 0012F5C4 0012FBF8 \MutexName = "3D0::DA3935EA83". _Ctrl+G nhập vào địa chỉ vùng nhớ: 401000 _Ctrl+E edit lại như sau: /*401000*/ PUSHAD /*401001*/ PUSHFD /*401002*/ PUSH 12FBF8 /*401007*/ XOR EAX,EAX /*401009*/ PUSH EAX /*40100A*/ PUSH EAX /*40100B*/ CALL kernel32.CreateMutexA /*401010*/ POPFD /*401011*/ POPAD /*401012*/ JMP kernel32.OpenMutexA /*401017*/ ADD BYTE PTR DS:[EAX],AL _ Tại 401000 bạn làm ơn nhấn F9 đúng một lần! Bạn sẽ trở lại: _Ctrl+G tới lại địa chỉ 401000, Ctrl+* set new origin tại 401000: _Nếu làm không đúng bạn sẽ không thực thi được hàm GetModuleHandleA, Okie, bây giờ bạn nhấn Alt+F1: bc OpenMutexA, bp GetModuleHandleA. _F9 lần 1: _F9 lần 2: _F9 lần 3: _F9 lần 4: _F9 lần 5: _F9 lần 6: _F9 lần 7: _F9 lần 8: _F9 lần 9 (số đẹp ): _Khi nhấn F9 đến đây, bạn nhấn Alt+F9 Execute Till User Code: _Yeah, magic jump! _Bạn nhìn qua FPU: _Cờ Z đang là 1, ta bắt đầu trace tới magic jump thì nó đổi thành 0: _Bước quan trọng là ở đây: Khi bạn tới dòng magic jump, right click tại cờ Z: _Set: _Nhấn Alt+F1: bc GetModuleHandleA _Okie, bây giờ bạn nhấn Alt+M: _Shift+F9: OEP, wow! _Lord PE DumpFull: _ImpREC: _Nothing Invalid, yeah! _Run thử dumped_.exe: Target#2: FRAPS 2.6.4-Armadillo 4.xx+IAT Elimination+Code Splicing _Load target lên OllyDBG: _Ta cần kiếm một mutex, đặt một breakpoint tại hàm OpenMutexA: BP OpenMutexA, nhấn F9 _Ok, vậy ta có: 0012F744 0012FDC8 \MutexName = "638::DA802AD515" _Ctrl+G nhập vào địa chỉ vùng nhớ: 401000 _Ctrl+E edit lại như sau: _Dòng PUSH 12FDC8 là địa chỉ của Mutex: 0012F744 0012FDC8 \MutexName = "638::DA802AD515". _Nhấn F9: _Xoá breakpoint OpenMutexA. Ctrl+G, nhập vào GetModuleHandleA, nhấn F2 để set một HE. _F9 lần 1: _Lần 2: _Lần 3: _Trở lại CPU, nhấn F8 trace down qua hàm RETN4 _Patch thành Jmp 003B54EC: _Hd GetModuleHandleA, nhấn Alt+M, đặt breakpoint on access tại 401000 Memory map, item 22 Address=00401000 Size=00012000 (73728.) Owner=fraps 00400000 Section=.text Type=Imag 01001002 Access=R Initial access=RWE _F9 2 lần: _Yeah, OEP! Dump thôi: _Tiếp tục xoá breakpoint cũ, đặt breakpoint: BP VirtualProtect. F9: _F9 cho tới nó run, ghi nhớ lần F9 cuối cùng. Của tôi ở đây là lần 18: _Trở lại CPU, nhấn F8 trace down qua return: _Có gì quen không các bạn, yeah, defeat thành công: _Ctrl+F9, F8: _Tiếp tục Ctrl+F9, F8 bạn tới đây: _Ctrl+F9, F8: _Tới đây: _Cuộn xuống để thấy dấu hiệu quá đẹp: _Yeah yeah! Now, đặt breakpoint tại: _F9, F8. Congratulation, đã tới OEP. Khửa khửa!. _Lord PE, Dump Full, done! _IAT: IAT Start: 01703584 77D49724 USER32.LoadIconA IAT End: 01703A5C 77E7F02E kernel32.SetFilePointer Len: 4D8 _Show Invalid, Fix Dump! Run! IV. Conclusion _Hy vọng bạn hài lòng với tut này! Hẹn gặp series#7. Đáng lẽ không có series này nhưng vì thấy các bạn chưa rành về dạng này nên tui làm luôn! Bye! Mỏi gót lê chân khắp đất trời Mắt xanh dõi hết mấy trùng khơi Nơi nơi chỉ thấy người múa kiếm Nào biết tìm đâu kiếm múa người Kiếm Ma Độc Cô Cầu Bại GrEeTs Fly Out: Deux, INFINITE, Computer_Angel, Zombie, NVH(c), softcracker_vn, luucorp, Aaron, JMI, Canterwood, hhphong, R@dier, tlandn, RCA, CTL, Moonbaby, kienmanowar, benina, TQN, the_lighthouse, Nini, hoadongnoi, dqtln, hosiminh, Nilrem, Teerayoot, Ferrari, Kruger, Kelvin, Devilz, NXL, light phoenix ...and you ! Special Thanx Cracks Latinos. Merci FFF, RiF, N-Gen (closed), ICI-TEAM pour me-aider des connaissances du Game Cracking! Thanx the author of OllyDBG. To be continued... Written by hacnho (tutorial date: Tien Giang 16/09/2005)

Các file đính kèm theo tài liệu này:

  • pdfarmdillo_tuts_series#6.pdf
Tài liệu liên quan