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??#
23 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 2111 | Lượt tải: 0
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:
- armdillo_tuts_series#6.pdf