首页
社区
课程
招聘
[求助]哪位老师能够指点一下ASProtect 2.1x SKE壳到ESI分情况时如何判断哪个需要改
发表于: 2006-4-22 13:21 4125

[求助]哪位老师能够指点一下ASProtect 2.1x SKE壳到ESI分情况时如何判断哪个需要改

2006-4-22 13:21
4125
哪位老师能够指点一下ASProtect 2.1x SKE壳跟踪到ESI分3种或者4种情况时如何判断哪个需要改?
我跟踪一个软件的ESI出现3种情况,ESI的值按出现顺序依次为B、D、82,其中B和D两种值出现较多,而且每次运行都会解出一个API来,82好像只出现两次,不清楚有没有解出API来,按照论坛教程打补丁,把82改成B或D就马上出错,程序结束运行了。
真心求教各位高手能够指点一下

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 236
活跃值: (100)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
脱壳到达这里后

00AC75F2     3BF0                    cmp esi,eax
00AC75F4     75 5E                   jnz short 00AC7654

每人的机子不一样数值也不一样,我这里的esi有三个值96,77,89(这几个数值好象每天都不一样),其中esi的值为77,89时00AC75F4处的
跳转成立,但两个数中只有当esi=77时才会对IAT进行加密,因此只要将77改为89就可以避开IAT加密了
2006-4-22 14:03
0
雪    币: 225
活跃值: (142)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
在cmp esi,eax 那句上下硬件断点,在数据窗口内找到IAT所在,然后就不停的F9每次停下来时看看注意esi的值和IAT的变化,IAT将依次被解码,如果ESI在某个值时能够将系统函数解码出来就是第一种或第二种情况,如果没变化就是第三种情况,如果解码成一个壳内的地址就是GetProcAddress了。

情况很好辨认,我的建议是多跟几个,最好将整个IAT解码都跟下来在总结一下,我这里基本上开始的几个函数是第一种情况,后面才出现第二种和第三种函数。GetProcAddress最少,因为一个系统的函数就一,两个。要想找到就要跟完整。
2006-4-22 15:36
0
雪    币: 211
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢两位热心解答,我再仔细跟踪试试看吧!
刚刚跟了一下,想请问一下楼上两位,下面有两个连续的地址00613048、0061304C都解密成了壳内的地址, 应该不都是GetProcAddress吧,如果说这是第三种情况,没处理,它又明明解码了一次,如果按楼上说的解码出来是壳中的地址就是第四种情况,就是GetProcAddress,那为什么会连续两个呢?真奇怪!

00613038  796DDF4E  ADVAPI32.LookupPrivilegeValueA
0061303C  796D1D50  ADVAPI32.AdjustTokenPrivileges
00613040  796D3FB1  ADVAPI32.RegEnumKeyExA
00613044  00000000
00613048  AC977BC6
0061304C  A8EB42E0  这里两个地址解码出来是壳中的地址
00613050  00000000
00613054  7174B52C  COMCTL32.PropertySheetA
00613058  7173176A  COMCTL32.ImageList_GetImageCount
0061305C  7174BF8D  COMCTL32.CreatePropertySheetPageA
00613060  71717EEB  COMCTL32.ImageList_DrawEx

这个软件很奇怪,ESI只有3种值,而且都进行了解码,只有上面的两个地址存在疑问,还请大侠解释一下,谢谢了!
2006-4-25 09:58
0
雪    币: 225
活跃值: (142)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
这个地址看起来不象GetProcAddress 可能是第3种情况

仔细看一下syscom和shooo的文章,可以把非第一种和第二种的情况都通过改变ESI变成第二种情况,这样对于GetProcAddress的函数解码会不正确,具体来讲就是变成上一个函数的地址,这样在IAT中查找两个连着的并且相同的地址,后面的那个就是被错误解码的GetProcAddress,纠正即可

这个东西有没有自己的DLL?也有可能是他自己的带的DLL
2006-4-25 11:07
0
游客
登录 | 注册 方可回帖
返回
//