能力值:
( 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加密了
|
能力值:
( LV6,RANK:90 )
|
-
-
3 楼
在cmp esi,eax 那句上下硬件断点,在数据窗口内找到IAT所在,然后就不停的F9每次停下来时看看注意esi的值和IAT的变化,IAT将依次被解码,如果ESI在某个值时能够将系统函数解码出来就是第一种或第二种情况,如果没变化就是第三种情况,如果解码成一个壳内的地址就是GetProcAddress了。
情况很好辨认,我的建议是多跟几个,最好将整个IAT解码都跟下来在总结一下,我这里基本上开始的几个函数是第一种情况,后面才出现第二种和第三种函数。GetProcAddress最少,因为一个系统的函数就一,两个。要想找到就要跟完整。
|
能力值:
( 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种值,而且都进行了解码,只有上面的两个地址存在疑问,还请大侠解释一下,谢谢了!
|
能力值:
( LV6,RANK:90 )
|
-
-
5 楼
这个地址看起来不象GetProcAddress 可能是第3种情况
仔细看一下syscom和shooo的文章,可以把非第一种和第二种的情况都通过改变ESI变成第二种情况,这样对于GetProcAddress的函数解码会不正确,具体来讲就是变成上一个函数的地址,这样在IAT中查找两个连着的并且相同的地址,后面的那个就是被错误解码的GetProcAddress,纠正即可
这个东西有没有自己的DLL?也有可能是他自己的带的DLL
|
|
|