穿山甲6.24 脱壳疑问
本人第一次到PYG发帖,这个问题困扰我已经很多天了。我遇到的一个程序采用Arm加密,用PEID查看结果为3.78--4.xx,用专用工具查看后得知是6.24版本。
这个版本到网上搜索很久没有一个满意的结果,在PYG的网站上下载一个视频回家研究多日,还是很不懂。
视频中Attach子进程后,修改的前2个字节为E8 45从何而来的,我把自己的程序改为E8 45后,进程被挂起,点击恢复没用。
那个脱离父进程的脚本在哪
我没有那个脚本,不知道怎么搞, 那个E8 45问题也没解决。。。在线等 研究了一个通宵,总算明白那2个字节原来是以前代码入口处的那2个字节东东。奇怪的是我的程序总是被挂起,要求恢复线程才能运行。。。但是我在我的OD下,点击右键根本就没视频上的那个Resume All Thread 选项,睡有那个视频的OD借来用用。。
这是原来的帖子:https://www.chinapyg.com/viewthread.php?tid=42304&extra=page%3D1&page=1 没人么???? 恢复所有线程那个菜单是插件StrongOD的功能。自己弄一个就可以了~ 谢谢LS的,但是又遇到新问题了,视频是在GetTickCount处下断的,仔细看了下,是第三次断了之后IAT就被乱序好,但是我的机器上的时候,第一次和第二次断下的汇编和视频上的差不多,再shift+f9就出现解码错误.
我之前下的断点和视频上的都一样.
难道是我修改那个call的时候出问题了?
视频是在Virtual Free时候返回,并把那个push 100 之后的那个call直接返回吧.
那断代码我也是按照视频,在GetModuleHanldeA+2正确返回时机的时候找到的,但是却出现了解码错误.真郁闷.
下GetTickCount断点的时候,我的直接可以返回.但是找不到那个乱叙IAT的地方.
那个软件我用ArmFP扫描是有IAT乱序的。郁闷啊 GetTickCount断下后第三次被乱序,这只是个特例,一般来说断下第一次返回就是正确的了 我在视频里面都说了! 更奇怪了,这几天下getmodulehandlea+2都没问题,刚才下那个断点竟然直接跑起来了,深深的严重郁闷下!!!这个穿山甲,真猛 换电脑后,GetModuleHandleA+2可以断下,在以前电脑上+5也可以断。。。
但是GetTickCount 返回的地方,总感觉不对。
第一次返回的代码为
013C8BAB FF15 48234001 CALL DWORD PTR DS: ; kernel32.GetTickCount
013C8BB1 8985 54D7FFFF MOV DWORD PTR SS:,EAX
013C8BB7 8B85 34D6FFFF MOV EAX,DWORD PTR SS:
013C8BBD 8985 58D7FFFF MOV DWORD PTR SS:,EAX
013C8BC3 8BB5 50D7FFFF MOV ESI,DWORD PTR SS:
013C8BC9 6BF6 03 IMUL ESI,ESI,3
013C8BCC E8 6F880000 CALL 013D1440
013C8BD1 F7D8 NEG EAX
013C8BD3 1BC0 SBB EAX,EAX
013C8BD5 83E0 02 AND EAX,2
第二次为:
013C8D83 FF15 48234001 CALL DWORD PTR DS: ; kernel32.GetTickCount
013C8D89 2B85 54D7FFFF SUB EAX,DWORD PTR SS:
013C8D8F 3D B80B0000 CMP EAX,0BB8
013C8D94 76 12 JBE SHORT 013C8DA8
013C8D96 8B95 88D7FFFF MOV EDX,DWORD PTR SS:
013C8D9C 81F2 C31C724B XOR EDX,4B721CC3
013C8DA2 8995 88D7FFFF MOV DWORD PTR SS:,EDX
013C8DA8 8B85 34D6FFFF MOV EAX,DWORD PTR SS:
013C8DAE 8985 0CABFFFF MOV DWORD PTR SS:,EAX
013C8DB4 8B8D 0CABFFFF MOV ECX,DWORD PTR SS:
013C8DBA 51 PUSH ECX
。。
之后再运行就死机,运气好会给个解码错误的提示。一般都是死机。。。。
我该怎么搞呢?
郁闷了,会的出来下吧。。。这个问题已经很久了。。。。 把软件发过来看看~