003D6C8F 8B85 A0C4FFFF MOV EAX,DWORD PTR SS:[EBP-3B60] 003D6C95 40 INC EAX 003D6C96 8985 A0C4FFFF MOV DWORD PTR SS:[EBP-3B60],EAX 003D6C9C 83BD 60C2FFFF 00 CMP DWORD PTR SS:[EBP-3DA0],0 003D6CA3 75 42 JNZ SHORT 003D6CE7 003D6CA5 0FB785 64C2FFFF MOVZX EAX,WORD PTR SS:[EBP-3D9C] 003D6CAC 85C0 TEST EAX,EAX 003D6CAE 74 0F JE SHORT 003D6CBF 003D6CB0 0FB785 64C2FFFF MOVZX EAX,WORD PTR SS:[EBP-3D9C] 003D6CB7 8985 64ADFFFF MOV DWORD PTR SS:[EBP+FFFFAD64],EAX 003D6CBD EB 0C JMP SHORT 003D6CCB 003D6CBF 8B85 5CC2FFFF MOV EAX,DWORD PTR SS:[EBP-3DA4] 003D6CC5 8985 64ADFFFF MOV DWORD PTR SS:[EBP+FFFFAD64],EAX 003D6CCB 6A 01 PUSH 1 003D6CCD FFB5 64ADFFFF PUSH DWORD PTR SS:[EBP+FFFFAD64] 003D6CD3 FFB5 98C4FFFF PUSH DWORD PTR SS:[EBP-3B68] 003D6CD9 E8 4634FEFF CALL 003BA124 003D6CDE 83C4 0C ADD ESP,0C 003D6CE1 8985 60C2FFFF MOV DWORD PTR SS:[EBP-3DA0],EAX 003D6CE7 83BD 60C2FFFF 00 CMP DWORD PTR SS:[EBP-3DA0],0 003D6CEE 75 42 JNZ SHORT 003D6D32 003D6CF0 0FB785 64C2FFFF MOVZX EAX,WORD PTR SS:[EBP-3D9C] 003D6CF7 85C0 TEST EAX,EAX 003D6CF9 74 0F JE SHORT 003D6D0A The first mark is Magical Salto and second in call that gives back the correct direction of the asked for API, therefore if the jump in 003D6CA3 takes place call of 003D6CD9 were not executed and the entrance were off the track to a zone of the Armadillo and not to the API that corresponds to him Mark(dòng đánh dấu màu vàng) đầu tiên là 1 Magical jump và mark thứ hai là hàm CALL trả về một correct direction của hàm API, vì vậy lệnh jump tại 003D6CA3 quyết định việc thực thi hàm Call 003D6CD9, nếu ko thực thi hàm Call này thì thành phần IAT sẽ off tới vùng Armadillo và nó ko trỏ đến API tương ứng. Once explained this we put a Breakpoint Hardware on execution in 003D6CA3 that is our magical jump, before closing the Olly is necessary to explain other zones of the Armadillo Như đã giải thích, chúng ta put một Hardware on execution tại 003D6CA3 là Magical jump của chúng ta, trước khi close Olly chúng ta cần giải thích 1 số vùng khác trong Armadillo If they do not remember the curl that solves the entrances of the IAT it finishes in Chúng ta hảy nhớ lại vòng lặp tính tóan các thành phần của IAT, nó sẽ hòan thành ở đây: 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 003D6E0D 2B85 9CC4FFFF SUB EAX,DWORD PTR SS:[EBP-3B64] 003D6E13 8B8D A0C4FFFF MOV ECX,DWORD PTR SS:[EBP-3B60] Now if we followed that code with the wheel of the single mouse [ seeing not executing ] we arrived at this zone Bây giờ, nếu chúng ta theo code này, hảy trượt con chuột xuống vùng dưới [mà ko executing ] chúng ta sẽ đến vùng này: 003D6FA7 33D2 XOR EDX,EDX 003D6FA9 BE 10270000 MOV ESI,2710 003D6FAE F7F6 DIV ESI 003D6FB0 03C8 ADD ECX,EAX 003D6FB2 898D 50C1FFFF MOV DWORD PTR SS:[EBP-3EB0],ECX 003D6FB8 83A5 48C1FFFF 00 AND DWORD PTR SS:[EBP-3EB8],0 003D6FBF EB 0D JMP SHORT 003D6FCE The same it is a standard zone of the Armadillo, this code generates I number that it will be used to say to the Armadillo accounts to him times will move the memory of the IAT to mix the entrances of this, in the noticeable line is when this I number gurda in a zone of memory for its later use, this I number is adulterated when we corrected the entrances of the IAT but it is very easy to return it to its original value, we will see it when we arrive at that point, while we put a Breakpoint Hardware on execution in 003D6FB2 Nó cũng là vùng standard của Armadillo, code này sinh một con số number, nó được sử dụng để thông báo cho Armadillo “đăng khỏan, hay là đăng nhập” lúc move vùng nhớ của IAT để pha trộn các thành phần của IAT,tại dòng lệnh đánh dấu như trên, số number này sẽ được ghi vào trong vùng memory để sử dụng sau này, số này bị giả mạo (sai lệch ) khi chúng ta corrected (chỉnh đúng) các thành phần của IAT(bạn sẽ tìm hiểu cách chỉnh đúng các thành phần IAT sau).Nhưng nó rất dễ được return lại giá trị original của nó, chúng ta sẽ thấy sau khi chúng ta đến vùng này , vì vậy chúng ta sẽ put “Breakpoint Harware on execution” tại 003D6FB2 Lowering a little but we will arrive a Nhìn xuống dưới 1 chút, chúng ta sẽ thấy: 003D7015 0FAF85 40C8FFFF IMUL EAX,DWORD PTR SS:[EBP-37C0] 003D701C 33D2 XOR EDX,EDX 003D701E B9 10270000 MOV ECX,2710 003D7023 F7F1 DIV ECX 003D7025 8985 40C1FFFF MOV DWORD PTR SS:[EBP-3EC0],EAX 003D702B 8B85 E0C6FFFF MOV EAX,DWORD PTR SS:[EBP-3920] 003D7031 8B00 MOV EAX,DWORD PTR DS:[EAX] 003D7033 8985 44C1FFFF MOV DWORD PTR SS:[EBP-3EBC],EAX 003D7039 8B85 40C1FFFF MOV EAX,DWORD PTR SS:[EBP-3EC0] 003D703F 8D0485 04000000 LEA EAX,DWORD PTR DS:[EAX*4+4] 003D7046 50 PUSH EAX 003D7047 8B85 E0C6FFFF MOV EAX,DWORD PTR SS:[EBP-3920] 003D704D 83C0 04 ADD EAX,4 003D7050 50 PUSH EAX 003D7051 FFB5 E0C6FFFF PUSH DWORD PTR SS:[EBP-3920] 003D7057 FF15 FCF23D00 CALL DWORD PTR DS:[3DF2FC] ; msvcrt.memmove 003D705D 83C4 0C ADD ESP,0C 003D7060 8B85 40C1FFFF MOV EAX,DWORD PTR SS:[EBP-3EC0] This zone, also standard, is the one that is in charge to move the memory whichever times indicates the previous parameter to him, the first mark is the line in which the base of the zone of the memory is obtained to which the calls to the APIs will be redirigirán from the code of ours app, we write down this direction for future uses 003D702B, the second mark is an indicator of this zone Vùng này cũng là vùng standard của Armadillo, nó là vùng có nhiệm vụ move memory bất cứ lúc nào dựa vào tham số trước nó, mark đầu tiên là base của vùng memory thu nhận những gì hàm calls đến APIs sẽ được redirect từ vùng code của ứng dụng, chúng ta ghi nhớ direction này(viết vào giấy) để dành sử dụng trong tương lai 003D702B, mark thứ hai là chỉ thị move của vùng nhớ này Let us close the Olly and we publish the file IAT Script.osc, that is script for OllyScript Chúng ta đóng Olly lại và làm 1 file IAT Script.osc, file này là 1 file Ollyscript dbh eoe LABEL eob BABEL run LABEL: esto jmp LABEL BABEL: cmp eip, 003D6CA3 jne FIN mov !ZF, 1 run jmp BABEL FIN: ret Whenever we use this script is necessary to change the noticeable direction so that he is equal to the direction where we put the Breakpoint Hardware on execution of the magical jump Chúng ta sử dụng script này tại direction mà chúng ta put Breakpoint Hardware on execution tại Magical Jump(tức là stop tại bp Magical Jump thì mới chạy script này) Now we open the Olly, we load ours app and we execute IAT Script.osc, script repairs the IAT and after seconds it stops in Bây giờ, mở Olly, chúng ta load ứng dụng của chúng ta và thực thi file IAT Script.osc, script sẽ sữa chửa IAT và dừng lại tại điểm dừng thứ 2 ,chúng ta sẽ thấy như sau: 003D6FB0 03C8 ADD ECX,EAX 003D6FB2 898D 50C1FFFF MOV DWORD PTR SS:[EBP-3EB0],ECX 003D6FB8 83A5 48C1FFFF 00 AND DWORD PTR SS:[EBP-3EB8],0 The value of 00000348 ECX is this value this adulterated by the execution of script the only thing that there is to do is to happen from 00000348 to 00000 2 48, whenever it is arrived at this point and the value of ECX is 3xx single is modified to 2xx and worked well, we erase all 2 the Breakpoints Hardware [ ] Giá trị của ECX là 00000348, nó là một gía trị giả tạo do thực thi script, nó chỉ nằm trong khỏang 00000348 đến 00000248, bất cứ khi nào đến điểm này và giá trị của ECX là 3xx thì hảy đổi nó thành 2xx và như thế chương trình sẽ làm việc rất good, chúng ta xóa 2 Breakpoints Hardware Let us lower with the wheel of the mouse [ seeing not executing ] until the zone where the base is taken from the IAT that is Chúng ta hảy trượt chuột xuống dưới cho đến vùng IAT lấy giá trị Base : 003D6FCE 8B85 48C1FFFF MOV EAX,DWORD PTR SS:[EBP-3EB8] 003D6FD4 3B85 50C1FFFF CMP EAX,DWORD PTR SS:[EBP-3EB0] 003D6FDA 0F83 9A000000 JNB 003D707A 003D6FE0 68 0D5EDF01 PUSH 1DF5E0D 003D6FE5 FFB5 4CC1FFFF PUSH DWORD PTR SS:[EBP-3EB4] 003D6FEB 8D8D 4CC1FFFF LEA ECX,DWORD PTR SS:[EBP-3EB4] 003D6FF1 E8 7BA0FDFF CALL 003B1071 003D6FF6 40 INC EAX 003D6FF7 33D2 XOR EDX,EDX 003D6FF9 B9 00E1F505 MOV ECX,5F5E100 003D6FFE F7F1 DIV ECX 003D7000 8995 4CC1FFFF MOV DWORD PTR SS:[EBP-3EB4],EDX 003D7006 8B85 4CC1FFFF MOV EAX,DWORD PTR SS:[EBP-3EB4] 003D700C 33D2 XOR EDX,EDX 003D700E B9 10270000 MOV ECX,2710 003D7013 F7F1 DIV ECX 003D7015 0FAF85 40C8FFFF IMUL EAX,DWORD PTR SS:[EBP-37C0] 003D701C 33D2 XOR EDX,EDX . 00 3D 701 E B9 10 2 700 00 MOV ECX,2 7 10 00 3D 702 3 F7F1 DIV ECX 00 3D 702 5 8985 40C1FFFF MOV DWORD PTR SS:[EBP-3EC0],EAX 00 3D 702 B 8B85 E0C6FFFF MOV EAX,DWORD PTR SS:[EBP-39 20] 00 3D 70 31 8B 00 MOV EAX,DWORD. 00 3D6FCE 8B85 48C1FFFF MOV EAX,DWORD PTR SS:[EBP-3EB8] 00 3D6FD4 3B85 50C1FFFF CMP EAX,DWORD PTR SS:[EBP-3EB0] 00 3D6FDA 0F83 9A 000 000 JNB 00 3D 707 A 00 3D6FE0 68 0D5EDF 01 PUSH 1DF5E0D 00 3D6FE5. EAX 00 3D 704 7 8B85 E0C6FFFF MOV EAX,DWORD PTR SS:[EBP-39 20] 00 3D 704 D 83C0 04 ADD EAX,4 00 3D 705 0 50 PUSH EAX 00 3D 70 51 FFB5 E0C6FFFF PUSH DWORD PTR SS:[EBP-39 20] 00 3D 705 7 FF15 FCF23D 00 CALL