(zwl313编辑:1楼的问题已经解决,我要脱的软件是3.75c非标准壳,请各位高手直接看9楼的问题吧,急盼中,谢谢!!)
各位大虾,小弟是个菜鸟,刚刚接触脱壳,就碰到arm,请各位赐教,不胜感激。
因为我的网速太慢,没有搜索相关文章就直接问了,大虾见谅:)
用FI查是arm3.75c版,用PEDIY查是arm3.78版。
我参考了精华7里夜凉如水的一篇文章“ Armadillo 3.78->Silicon Re”,原文链接
http://bbs.pediy.com/showthread.php?threadid=14954
感觉我脱的程序应该是双进程标准壳,所以采用文章中的3次断点法。
我用的是OD1.10中文版,XP SP2系统
过程如下:
OD加载程序
00DAA000 > $ 60 PUSHAD
00DAA001 . E8 00000000 CALL tzfx.00DAA006
00DAA006 $ 5D POP EBP
00DAA007 . 50 PUSH EAX
00DAA008 . 51 PUSH ECX
00DAA009 . 0FCA BSWAP EDX
00DAA00B . F7D2 NOT EDX
00DAA00D . 9C PUSHFD
00DAA00E . F7D2 NOT EDX
00DAA010 . 0FCA BSWAP EDX
00DAA012 . EB 0F JMP SHORT tzfx.00DAA023
1、下OpenMutexA断,并在401000处写欺骗代码转换为单进程成功。
2、下GetModuleHandleA断,几次F9,找到magic jump,也成功。
014299AC 8B0D 20914501 MOV ECX,DWORD PTR DS:[1459120]
014299B2 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
014299B5 A1 20914501 MOV EAX,DWORD PTR DS:[1459120]
014299BA 393C06 CMP DWORD PTR DS:[ESI+EAX],EDI
014299BD 75 16 JNZ SHORT 014299D5
014299BF 8D85 B4FEFFFF LEA EAX,DWORD PTR SS:[EBP-14C]
014299C5 50 PUSH EAX
014299C6 FF15 D4E04401 CALL DWORD PTR DS:[144E0D4] ; kernel32.LoadLibraryA
014299CC 8B0D 20914501 MOV ECX,DWORD PTR DS:[1459120]
014299D2 89040E MOV DWORD PTR DS:[ESI+ECX],EAX
014299D5 A1 20914501 MOV EAX,DWORD PTR DS:[1459120]
014299DA 393C06 CMP DWORD PTR DS:[ESI+EAX],EDI
014299DD 0F84 AD000000 JE 01429A90 ;将此改为jmp
014299E3 33C9 XOR ECX,ECX
014299E5 8B03 MOV EAX,DWORD PTR DS:[EBX]
014299E7 3938 CMP DWORD PTR DS:[EAX],EDI
3、下GetCurrentThreadId断,
第一次F9,堆栈内容
00128310 73391E26 /CALL 到 GetCurrentThreadId 来自 73391E20
00128314 00000001
00128318 73391C0A 返回到 73391C0A 来自 73391DD2
0012831C 73391B50 返回到 73391B50 来自 73391B7C
第二次F9,
001282F0 73393526 /CALL 到 GetCurrentThreadId 来自 73393520
也没什么不对,但第三次F9,问题出现了,程序发生了无法处理的异常并终止,并没有像预期的到达返回时机找到OEP。
参考精华7里henryouly的一篇文章“Armadillo标准壳完全扫盲”
原文链接
http://bbs.pediy.com/showthread.php?threadid=15803
里面说将magic jump改为jmp,跳转后如果不改回来可能解码时会发生异常,于是我将它改回来,可是问题依然,
014446F2 83E3 0F AND EBX,0F
014446F5 03F3 ADD ESI,EBX
014446F7 A1 34D74501 MOV EAX,DWORD PTR DS:[145D734] ;145d734处为全零
014446FC 8B0D 90D54501 MOV ECX,DWORD PTR DS:[145D590] ; tzfx.00DBA310
01444702 8B04B0 MOV EAX,DWORD PTR DS:[EAX+ESI*4] //在此处发生异常
01444705 3341 2C XOR EAX,DWORD PTR DS:[ECX+2C]
01444708 8B0D 90D54501 MOV ECX,DWORD PTR DS:[145D590] ; tzfx.00DBA310
0144470E 3341 7C XOR EAX,DWORD PTR DS:[ECX+7C]
01444711 8B0D 90D54501 MOV ECX,DWORD PTR DS:[145D590] ; tzfx.00DBA310
01444717 3341 74 XOR EAX,DWORD PTR DS:[ECX+74]
0144471A 8B0D 90D54501 MOV ECX,DWORD PTR DS:[145D590] ; tzfx.00DBA310
01444720 3341 58 XOR EAX,DWORD PTR DS:[ECX+58]
01444723 8B0D 90D54501 MOV ECX,DWORD PTR DS:[145D590] ; tzfx.00DBA310
01444729 3341 64 XOR EAX,DWORD PTR DS:[ECX+64]
0144472C 3385 9CD5FFFF XOR EAX,DWORD PTR SS:[EBP-2A64]
01444732 50 PUSH EAX
01444733 FFB5 D4D5FFFF PUSH DWORD PTR SS:[EBP-2A2C]
01444739 E8 6B2D0000 CALL 014474A9
异常处 DS:[00000030]=???
EAX=00000000
此时EAX=00000000 ESI=0000000c EBP=0012cf48 ESP=00128cb8
堆栈
00128CB8 00000000
00128CBC 00000001
00128CC0 003C4330
00128CC4 00000000
情况是这样,还望各位大虾不吝赐教,留言或给我发邮件都行,zwl313@yahoo.com.cn
在此先谢过了。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法