奇怪的Armadillo 脱壳问题
我遇到一个软件 (软件见下面的连接)用peid扫描后发现是Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks的壳
用od加载到:
00519000 > 60 PUSHAD
00519001 E8 00000000 CALL MediaEdu.00519006
00519006 5D POP EBP
00519007 50 PUSH EAX
00519008 51 PUSH ECX
00519009 0FCA BSWAP EDX
0051900B F7D2 NOT EDX
0051900D 9C PUSHFD
0051900E F7D2 NOT EDX
00519010 0FCA BSWAP EDX
然后用HE GetModuleHandleA+5下断,然后shift+F9断到
7C80B52E 837D 08 00 CMP DWORD PTR SS:[EBP+8],0
7C80B532 74 18 JE SHORT kernel32.7C80B54C
7C80B534 FF75 08 PUSH DWORD PTR SS:[EBP+8]
7C80B537 E8 682D0000 CALL kernel32.7C80E2A4
7C80B53C 85C0 TEST EAX,EAX
7C80B53E 74 08 JE SHORT kernel32.7C80B548
7C80B540 FF70 04 PUSH DWORD PTR DS:[EAX+4]
7C80B543 E8 F4300000 CALL kernel32.GetModuleHandleW
7C80B548 5D POP EBP
7C80B549 C2 0400 RETN 4
7C80B54C 64:A1 18000000 MOV EAX,DWORD PTR FS:[18]
7C80B552 8B40 30 MOV EAX,DWORD PTR DS:[EAX+30]
7C80B555 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8]
7C80B558 ^ EB EE JMP SHORT kernel32.7C80B548
看到堆叠信息:
001294FC /0012EC44
00129500 |00C26DF3 返回到 00C26DF3 来自 kernel32.GetModuleHandleA
00129504 |00C3BC1C ASCII "kernel32.dll"
00129508 |00C3CEC4 ASCII "VirtualAlloc"
0012950C |00C3FA98
00129510 |7C9210ED ntdll.RtlLeaveCriticalSection
按 两下shift+F9后堆叠变成:
00129260 /00129500
00129264 |00C15CE1 返回到 00C15CE1 来自 kernel32.GetModuleHandleA
00129268 |001293B4 ASCII "kernel32.dll"
用isdebugpresent隐藏,然后在调试选项中异常中去掉
自定义的忽略
后用alt+F9返回
到:
00C15CE1 8B0D AC40C400 MOV ECX,DWORD PTR DS:[C440AC]
00C15CE7 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
00C15CEA A1 AC40C400 MOV EAX,DWORD PTR DS:[C440AC]
00C15CEF 391C06 CMP DWORD PTR DS:[ESI+EAX],EBX
00C15CF2 75 16 JNZ SHORT 00C15D0A
00C15CF4 8D85 B4FEFFFF LEA EAX,DWORD PTR SS:[EBP-14C]
00C15CFA 50 PUSH EAX
00C15CFB FF15 BC62C300 CALL DWORD PTR DS:[C362BC] ; kernel32.LoadLibraryA
00C15D01 8B0D AC40C400 MOV ECX,DWORD PTR DS:[C440AC]
00C15D07 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
00C15D0A A1 AC40C400 MOV EAX,DWORD PTR DS:[C440AC]
00C15D0F 391C06 CMP DWORD PTR DS:[ESI+EAX],EBX
00C15D12 0F84 2F010000 JE 00C15E47 :MAGIC JUMP “改成jmp跟入”
00C15D18 33C9 XOR ECX,ECX
00C15D1A 8B07 MOV EAX,DWORD PTR DS:[EDI]
00C15D1C 3918 CMP DWORD PTR DS:[EAX],EBX
去到硬件断点 00C15D12 0F84 2F010000 JMP 00C15E47 跟入后到:
00C15E50 83C6 04 ADD ESI,4
00C15E53 395F FC CMP DWORD PTR DS:[EDI-4],EBX
00C15E56 ^ 0F85 49FEFFFF JNZ 00C15CA5 到这里:
00C15E5C EB 03 JMP SHORT 00C15E61 “在这下断运行一下shift+F9,去到断点”
00C15E5E D6 SALC
00C15E5F D6 SALC
00C15E60 8F ??? ; 未知命令
00C15E61 8B0D 6C8FC400 MOV ECX,DWORD PTR DS:[C48F6C]
00C15E67 3BCB CMP ECX,EBX
返回到MAGIC JUMP 取消修改 设置内存断点 运行shift+F9
00C2F68F 8B12 MOV EDX,DWORD PTR DS:[EDX] 断到这里,
00C2F691 8955 DC MOV DWORD PTR SS:[EBP-24],EDX
00C2F694 834D FC FF OR DWORD PTR SS:[EBP-4],FFFFFFFF
00C2F698 EB 11 JMP SHORT 00C2F6AB
00C2F69A 6A 01 PUSH 1
00C2F69C 58 POP EAX
00C2F69D C3 RETN
00C2F69E 8B65 E8 MOV ESP,DWORD PTR SS:[EBP-18]
00C2F6A1 834D FC FF OR DWORD PTR SS:[EBP-4],FFFFFFFF
00C2F6A5 8B7D 08 MOV EDI,DWORD PTR SS:[EBP+8]
00C2F6A8 8B55 DC MOV EDX,DWORD PTR SS:[EBP-24]
00C2F6AB A1 E400C400 MOV EAX,DWORD PTR DS:[C400E4]
00C2F6B0 3190 88000000 XOR DWORD PTR DS:[EAX+88],EDX
00C2F6B6 A1 E400C400 MOV EAX,DWORD PTR DS:[C400E4]
00C2F6BB 3190 88000000 XOR DWORD PTR DS:[EAX+88],EDX
00C2F6C1 A1 E400C400 MOV EAX,DWORD PTR DS:[C400E4]
00C2F6F7 /EB 20 JMP SHORT 00C2F719
00C2F6F9 |83FA 01 CMP EDX,1
00C2F6FC |75 1E JNZ SHORT 00C2F71C
00C2F6FE |FF77 04 PUSH DWORD PTR DS:[EDI+4]
00C2F701 |FF77 08 PUSH DWORD PTR DS:[EDI+8]
00C2F704 |6A 00 PUSH 0
00C2F706 |FF77 0C PUSH DWORD PTR DS:[EDI+C]
00C2F709 |8B90 90000000 MOV EDX,DWORD PTR DS:[EAX+90]
00C2F70F |3350 40 XOR EDX,DWORD PTR DS:[EAX+40]
00C2F712 |3350 04 XOR EDX,DWORD PTR DS:[EAX+4]
00C2F715 |2BCA SUB ECX,EDX
00C2F717 |FFD1 CALL ECX ; MediaEdu.0045C7B4 应该是OEP 我在这里跟入
00C2F719 \8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
00C2F71C 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]
0045C7B4 55 PUSH EBP 应该是OEP,我在这里用工具保存
0045C7B5 8BEC MOV EBP,ESP
0045C7B7 6A FF PUSH -1
0045C7B9 68 D8FF4900 PUSH MediaEdu.0049FFD8
0045C7BE 68 D0BC4500 PUSH MediaEdu.0045BCD0
0045C7C3 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
0045C7C9 50 PUSH EAX
0045C7CA 64:8925 0000000>MOV DWORD PTR FS:[0],ESP
0045C7D1 83EC 58 SUB ESP,58
0045C7D4 53 PUSH EBX
0045C7D5 56 PUSH ESI
0045C7D6 57 PUSH EDI
0045C7D7 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
0045C7DA FF15 50E34800 CALL DWORD PTR DS:[48E350] ; kernel32.GetVersion
0045C7E0 33D2 XOR EDX,EDX
0045C7E2 8AD4 MOV DL,AH
保存修复后用peid扫描还有壳
Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks
上网找资料 找到要用BP OpenMutexA下断,但是我下断后F9程序并没有被断掉
希望大家帮帮忙~
最好给我一点破解该软件的说明,谢谢大家拉
软件下载地址:
http://www.31598.com/download/e_Class.zip
黑马多媒体电子教室 7.1
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)