【文章作者】: 红绡枫叶
【保护方式】: ACProtect V1.4X -> risco
【使用工具】: OD,PEID
【操作平台】: WIN 7
--------------------------------------------------------------------------------
【详细过程】
最近在我电脑上看到一CrackMe,加了 ACProtect V1.4X -> risco(PEID查的),但无奈弄了老半天还没搞定IAT
我希望那位可以帮帮我,尽量把过程写详细点,好照顾我们这些菜鸟,特别是IAT那部分..我对它是半知半解,看了
论坛的很多贴子,但并不很懂怎样手工修复,恳求高人帮助。在这里我先说一声谢谢。
以下是我的过程。。。不知道哪里出错了..诸位看看把:
忽略所有异常,然后在.idata下断点,断下后在代码段.code段下断点就马上到OEP。
这时候打开ImportREC查找输入表,我晕了,当前输入表:(58 (十进制:88) 个未解决的指针)。
插件不能修复,跟踪只能修复几个,也许我的操作系统是WIN7的缘故。于是我想手工解决。
第一个错误的RVA0000C0C8,加上基址:0040c0c8。重载,下命令 hr 0040c0c8。
运行来到
004268EA 8B7E 10 MOV EDI,DWORD PTR DS:[ESI+10]
004268ED 03FA ADD EDI,EDX
004268EF 03BD 1BFC4000 ADD EDI,DWORD PTR SS:[EBP+40FC1B]
004268F5 85DB TEST EBX,EBX
004268F7 0F84 62010000 JE Acprotec.00426A5F
004268FD F7C3 00000080 TEST EBX,80000000
00426903 75 1D JNZ SHORT Acprotec.00426922
往下走几步:
0042693B 81E3 FFFFFF0F AND EBX,0FFFFFFF
00426941 53 PUSH EBX
00426942 FFB5 17FC4000 PUSH DWORD PTR SS:[EBP+40FC17]
00426948 FF95 8CE24100 CALL DWORD PTR SS:[EBP+41E28C] ; 此处过后寄存器出现函数
0042694E 3B9D 1FFC4000 CMP EBX,DWORD PTR SS:[EBP+40FC1F] ; Acprotec.00400000
00426954 7C 0F JL SHORT Acprotec.00426965 ;
再往下走:
0042695D 8803 MOV BYTE PTR DS:[EBX],AL
0042695F 43 INC EBX
00426960 3803 CMP BYTE PTR DS:[EBX],AL
00426962 ^ 75 F9 JNZ SHORT Acprotec.0042695D
这里逐步读取函数名称,再往下:
0042696D 3B85 9CE24100 CMP EAX,DWORD PTR SS:[EBP+41E29C] ; USER32.MessageBoxA 可疑
00426973 74 20 JE SHORT Acprotec.00426995 ; jump
00426975 |90 NOP
00426976 |90 NOP
00426977 |90 NOP
00426978 |90 NOP
00426979 |3B85 9D014100 CMP EAX,DWORD PTR SS:[EBP+41019D] ; jump 可疑
0042697F |74 09 JE SHORT Acprotec.0042698A
这里可疑,再往下走:
004269EA /7F 34 JG SHORT Acprotec.00426A20 ; 这里没跳走,EAX里的函数就被加密了
004269EC |90 NOP
004269ED |90 NOP
004269EE |90 NOP
004269EF |90 NOP
004269F0 |8BB5 E4FC4000 MOV ESI,DWORD PTR SS:[EBP+40FCE4]
004269F6 |53 PUSH EBX
004269F7 |50 PUSH EAX
004269F8 |E8 A3B2FFFF CALL Acprotec.00421CA0
004269FD |8BD8 MOV EBX,EAX
004269FF |58 POP EAX
00426A00 |33C3 XOR EAX,EBX
00426A02 |C606 68 MOV BYTE PTR DS:[ESI],68
00426A05 |8946 01 MOV DWORD PTR DS:[ESI+1],EAX
00426A08 |C746 05 8134240>MOV DWORD PTR DS:[ESI+5],243481
00426A0F |895E 08 MOV DWORD PTR DS:[ESI+8],EBX
00426A12 |C646 0C C3 MOV BYTE PTR DS:[ESI+C],0C3
00426A16 |5B POP EBX
00426A17 |8BC6 MOV EAX,ESI
00426A19 |8385 E4FC4000 0>ADD DWORD PTR SS:[EBP+40FCE4],0D
我于是重载,把上面的可疑跳转修改之后,在查看ImportREC:
当前输入表:
(2 (十进制:2) 个未解决的指针)
在针对性跟踪,发现这两个指针都是 GetProAddress..但修复后还是无法运行。
那位能够帮帮我吗?
--------------------------------------------------------------------------------
2011年08月30日 10:29:40
[课程]Android-CTF解题方法汇总!