Chúng ta nhấn tiếp F7 và đến đây: 003BEC4C A1 8CF13E00 MOV EAX,DWORD PTR DS:[3EF18C] 003BEC51 C3 RETN The memory direction can vary, with F8 we arrive until the RETN, if we see EAX = 0A2
Trang 1In that direction we put a F2 and we give F9, once for we cleared Breakpoint giving F2 again and once again we put a F2 in the section text of the Mamory Map,
we give F9 and for here
Tại direction mà chúng ta đã dò xuống vùng code theo lệnh thẩm tra 00604943, chúng ta put F2(tại dòng đánh dấu vàng như trên), rồi F9, sau đó clear Breakpoint mà chúng ta nhấn F2 ở trên, một lần nữa chúng ta nhấn F2 tại section text trong Memory Map, nhấn F9 thực thi tiếp, chúng ta đến đây:
00514CB5 55 PUSH EBP
00514CB6 8BEC MOV EBP,ESP
00514CB8 6A FF PUSH -1
00514CBA 68 80885700 PUSH uedit32.00578880
00514CBF 68 A0855100 PUSH uedit32.005185A0
00514CC4 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
00514CCA 50 PUSH EAX
00514CCB 64:8925 00000000 MOV DWORD PTR FS:[0],ESP
In the state bar [ 00514CB5 says "Break-on-Access when executing ]" and that is our OEP
Trong thanh state dưới Olly [ 00514CB5 says "Break-on-Access when executing
“] và đó chính là OEP
Once obtained our OEP we pointed it for future references, before closing the Olly
we see that information gives the Armadillo us, we give F8 until arriving at the direction
Chúng ta hảy ghi nhớ chỉ thị này để dùng nó sau này, trước khi close Olly, chúng ta hảy tìm hiểu một số thông tin của Armadillo, chúng ta nhấn F8 cho đến chỉ thị này:
00514CDB FF15 9019F800 CALL DWORD PTR DS:[F81990]
Let us follow it with F7 and it took a to us
Trang 2Chúng ta nhấn tiếp F7 và đến đây:
003BEC4C A1 8CF13E00 MOV EAX,DWORD PTR DS:[3EF18C]
003BEC51 C3 RETN
The memory direction can vary, with F8 we arrive until the RETN, if we see EAX
= 0A280105, for which do not have much very observant experience or they are not east is the value that gives back to the API kernel32.GetVersion, therefore this
is the first call to the IAT, but the memory direction of which is called is [ 00F81990 ], if they see the Memory Map will see that the memory of ours begins
in 00400000 and finishes in 007D0000, which means that ours IAT was redirected to a zone of memory outside our feasible one
Direction trong memory của bạn có thể khác, nhấn F8 đến RETN, chúng ta thấy EAX = 0A280105, với kinh nghiệm ta nhận thấy chúng là giá trị trả về của hàm API kernel32.GetVersion, vì vậy đây là hàm gọi đầu tiên đến IAT, nhưng memory direction của call lại là [ 00F81990 ], chúng ta nhìn vào Memory Map
sẽ thấy memory của chúng ta bắt đầu từ 00400000 và kết thúc tại 007D0000, vì vậy có nghĩa là IAT được redirected đến vùng memory ngòai vùng code thực thi
We will treat that subject but late, first we are going to obtain our IAT with the correct entrances, in the Olly we fence to the direction 00F81990 in the Dump and will see
Chúng ta sẽ nghiên cứu chủ đề này sau, trước tiên chúng ta sẽ thu được IAT của chúng ta với các thành phần hợp lệ, trong Olly chúng ta nhảy đến direction 00F81990 trong Dump window và sẽ thấy: (click phải direction 00514CDB, Follow in Dump, Memory address)
00F81970 0C 9B D1 77 56 46 D1 77 ›ÑwVFÑw
00F81978 50 16 0F 77 66 94 D1 77 Pwfӄw
00F81980 B4 6A D1 77 B3 7B D1 77 ´jÑw³{Ñw
00F81988 DB 7B D1 77 E0 20 C4 77 Û{Ñwà Äw
00F81990 4C EC 3B 00 5F 3C D1 77 Lì;._<Ñw
00F81998 96 9C D1 77 DC 79 D1 77 –œÑwÜyÑw
00F819A0 D0 2B 00 10 10 A5 00 10 Ð+.¥
00F819A8 0C 15 F4 77 22 5F D1 77 ôw"_Ñw
Trang 300F819B0 EB E0 3B 00 71 EB D1 77 ëà;.qëÑw
As it is possible to be observed are several correct entrances, in the personnel I prefer to put a Breakpoint, Hardware, on write, Dword in a correct entrance, this case we put it in 00F81970
Có thể quan sát thấy các thành phần khác đều correct, một cách tổng quát, tui put 1 Breakpoint, Harware, on write, Dword cho 1 thành phần correct của IAT, trường hợp này tui put bp tại 00F81970
We closed the Olly, we return to load ours app, we hide dbg we give F9 and one will stop several times in which sweepings will be griten
Chúng ta close Olly lại và load lại app của chúng ta, chúng ta hide dbg, nhấn F9
và sẽ dừng lại vài lần cho đến khi write vào memory tại 00F81970 như sau: (ở case người dịch là 1 lần)
00F81970 EE FE EE FE EE FE EE FE îþîþîþîþ
00F81978 EE FE EE FE EE FE EE FE îþîþîþîþ
(để dump ta click phải vào EDI và dump, hay goto cũng được, vì đang trong hàm API)
Let us continue pressing F9 until in the memory direction 00F81970 is written a value that is resembled an entrance of the IAT
Chúng ta tiếp tục nhấn F9 (khỏang 21 lần) cho đến khi memory được writen 1 giá trị giống như 1 thành phần của IAT
00F81970 0D F0 AD BA 0D F0 AD BA ðº.ðº
00F81978 EE FE EE FE EE FE EE FE îþîþîþîþ This and other but is sweepings
(lướt qua)
00F81970 FE AE 3B 00 0D F0 AD BA þ®; ðº
Trang 400F81978 0D F0 AD BA 0D F0 AD BA ðº.ðº
This I complete is seen well but the other directions of the IAT even have value 0DF0ADBA, so we give another F9 and stops in
Ở đây ta thấy được memory có giá trị rất well , các giá trị khác trong IAT cũng đều có giá trị 0DF0ADBA, vì vậy nhấn F9 (khỏang 2 lần) tiếp và dừng lại tại đây:
003D6DE5 8B85 0CC8FFFF MOV EAX,DWORD PTR SS:[EBP-37F4]
003D6DEB 8B8D 60C2FFFF MOV ECX,DWORD PTR SS:[EBP-3DA0] 003D6DF1 8908 MOV DWORD PTR DS:[EAX],ECX
003D6DF3 8B85 0CC8FFFF MOV EAX,DWORD PTR SS:[EBP-37F4]
003D6DF9 83C0 04 ADD EAX,4
003D6DFC 8985 0CC8FFFF MOV DWORD PTR SS:[EBP-37F4],EAX
003D6E02 ^E9 CEFCFFFF JMP 003D6AD5
003D6E07 FF15 80F03D00 CALL DWORD PTR DS:[3DF080] ; kernel32.GetTickCount
00F81970 1E E1 3B 00 CE AD 3B 00 -á;.Î;
00F81978 07 AE 3B 00 68 58 AA 71 ®;.hXªq
If we see the memory direction we see that the entrance is not correct like was it at the moment for putting the Breakpoint Hardware, this is so that the table to the being redirected outside the memory takes advantage of so that this zone of redireccionamiento is variable and potentially different whenever ours is executed app, as it is, if we above see a little the zone of our Breakpoint we see that already there are correct entrances, reason why go by good way, we clear our Breakpoint Hardware and we give F8 until arriving a
Chúng ta thấy memory direction của các thành phần ko phải đúng y giống như lúc chúng ta đặt Breakoint Hardware, table được redirect bên ngòai vùng nhớ thực thi thay đổi và khác nhau một cách tiềm tàng bất cứ khi nào ứng dụng chúng ta thực thi, như chúng ta đã thấy nó như vừa rồi.nếu chúng ta nhìn lên
Trang 5trên trong win Dump chúng ta sẽ thấy các thành phần đều correct, chúng ta đã
đi đúng hướng rồi các bạn, bây giờ clear Breakpoint Hardware và nhấn F8 đến đây:
003D6C00 FFB5 78C8FFFF PUSH DWORD PTR SS:[EBP-3788]
003D6C06 FF15 ECF23D00 CALL DWORD PTR DS:[3DF2EC] ; msvcrt.strchr
003D6C0C 59 POP ECX
003D6C0D 59 POP ECX
003D6C0E 40 INC EAX
003D6C0F 8985 78C8FFFF MOV DWORD PTR SS:[EBP-3788],EAX
003D6C15 83BD 94C4FFFF 00 CMP DWORD PTR SS:[EBP-3B6C],0
003D6C1C 74 71 JE SHORT 003D6C8F
003D6C1E 8B85 94C4FFFF MOV EAX,DWORD PTR SS:[EBP-3B6C]
003D6C24 8985 54C2FFFF MOV DWORD PTR SS:[EBP-3DAC],EAX
003D6C2A EB 0F JMP SHORT 003D6C3B
003D6C2C 8B85 54C2FFFF MOV EAX,DWORD PTR SS:[EBP-3DAC]
003D6C32 83C0 0C ADD EAX,0C
003D6C35 8985 54C2FFFF MOV DWORD PTR SS:[EBP-3DAC],EAX
003D6C3B 8B85 54C2FFFF MOV EAX,DWORD PTR SS:[EBP-3DAC]
003D6C41 8378 08 00 CMP DWORD PTR DS:[EAX+8],0
003D6C45 74 48 JE SHORT 003D6C8F
003D6C47 68 00010000 PUSH 100
003D6C4C 8D85 54C1FFFF LEA EAX,DWORD PTR SS:[EBP-3EAC]
003D6C52 50 PUSH EAX
003D6C53 8B85 54C2FFFF MOV EAX,DWORD PTR SS:[EBP-3DAC]
003D6C59 FF30 PUSH DWORD PTR DS:[EAX]
003D6C5B E8 8B14FEFF CALL 003B80EB
003D6C60 83C4 0C ADD ESP,0C
003D6C63 8D85 54C1FFFF LEA EAX,DWORD PTR SS:[EBP-3EAC]
003D6C69 50 PUSH EAX
003D6C6A FFB5 5CC2FFFF PUSH DWORD PTR SS:[EBP-3DA4]
003D6C70 FF15 58F33D00 CALL DWORD PTR DS:[3DF358] ; msvcrt._stricmp
003D6C76 59 POP ECX
Trang 6This zone is a standard of the Armadillo and it says us that we are closely together
of Magical Salto that repaired the IAT, I stood out both indicating main of the zone, if the jump of direction 003D6C45 is followed took a to us
Vùng này là vùng standard của Armadillo và nó nói cho chúng ta biết vị trí của cặp lệnh jump gọi là Magical Jumps, dùng để sửa chửa IAT, Tôi đang đứng ở giữa vùng chính của cặp lệnh jump Magical, nếu chúng ta theo code của direction 003D6C45(ko thực thi), chúng ta sẽ đến :