小弟手上有个Armadillo 加壳的外挂,看的Armadillo 脱壳教程也不算少了,可是怎么也脱不掉,关键是找不到 magic jump。。。。实在太郁闷了
先bp OpenMutexA,然后在401000键入欺骗代码。
之后he GetModuleHandleA下断时,堆栈如下:
0012FF38 004B6ED8 /CALL 到 GetModuleHandleA 来自 loginTJ2.004B6ED2
0012FF3C 00000000 \pModule = NULL
0012FF40 00000000
0012FF44 00141F1C
*******************************************
0012BB90 004ABB4B /CALL 到 GetModuleHandleA 来自 loginTJ2.004ABB45
0012BB94 00000000 \pModule = NULL
0012BB98 0012FF2C
0012BB9C 00000000
*******************************************
0012BCB0 004A59E6 /CALL 到 GetModuleHandleA
0012BCB4 00000000 \pModule = NULL
0012BCB8 0012FF2C
0012BCBC 00000000
*******************************************
0012BB70 600043AC /CALL 到 GetModuleHandleA 来自 kmon.600043A6
0012BB74 600603E0 \pModule = "ntdll.dll"
0012BB78 00000084
*******************************************
00129E08 7C81FD9F /CALL 到 GetModuleHandleA 来自 kernel32.7C81FD9A
00129E0C 00000000 \pModule = NULL
00129E10 003C5FF0
00129E14 00000000
看调用GetModuleHandleA 的位置,要么在code段中调用,要么是系统领空,根本没在壳中代码出现过。而更莫名的事情在后头。
在4A6D8B之后连续出现3个 call GetModuleHandleA感觉很莫名,网上的教程上没提到过
004A6D83 > \6A 00 push 0 ; /pModule = NULL
004A6D85 . FF15 34C04C00 call [<&KERNEL32.GetModuleHandleA>] ; \GetModuleHandleA
004A6D8B . 8985 1CFFFFFF mov [ebp-E4], eax
004A6D91 . 8B85 1CFFFFFF mov eax, [ebp-E4]
004A6D97 . 8B8D 1CFFFFFF mov ecx, [ebp-E4]
004A6D9D . 0348 3C add ecx, [eax+3C]
004A6DA0 . 898D 00FEFFFF mov [ebp-200], ecx
004A6DA6 . 6A 00 push 0 ; /pModule = NULL
004A6DA8 . FF15 34C04C00 call [<&KERNEL32.GetModuleHandleA>] ; \GetModuleHandleA
004A6DAE . 8B95 00FEFFFF mov edx, [ebp-200]
004A6DB4 . 0342 28 add eax, [edx+28]
004A6DB7 . 8945 C4 mov [ebp-3C], eax
004A6DBA . 6A 00 push 0 ; /pModule = NULL
004A6DBC . FF15 34C04C00 call [<&KERNEL32.GetModuleHandleA>] ; \GetModuleHandleA
这段代码也在code段中,之后再f9程序就跑起来了。。。。
程序中GetModuleHandleA一共就调用了这几次,我曾经每个调用的位置都仔细察看了下,没发现有magic jump的任何迹象。
断断续续想了很久了,一直想不出来为什么。还有我想过,难道因为我的系统是xp sp3,是不是会有所影响。。。。系统函数调用之类的会有所改变?
球高手帮下忙。。。。
还有,上传文件求脱壳会不会锁贴之类的。。。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!