WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 3780查看
  • 1回复

主题

好友

4976

积分

论坛元老

发表于 2010-3-8 23:05:05 |显示全部楼层
看见有大牛发了ZP的脚本,感觉效果不是太好,于是我也发2个。
可能效果也同样不好,脚本代码也写的很挫,测试的也不多,懒得弄了,就发了吧。
所有的说明都在附件里,自己看吧,有需要的自己改吧。
缺CB了,赚点小钱,5CB貌似不贵吧。。



使用说明:
1.判断是否存在DLL模拟
判断方法:
OD载入后,下bp CreateFileA,断下后看堆栈,判断是否是系统的dll
比如:
有模拟的断下后的堆栈如下:
第一次:
0007F8F8   00973440  /CALL 到 CreateFileA 来自 0097343A
0007F8FC   0007FAA8  |FileName = "C:\WINDOWS\system32\comdlg32.dll"
0007F900   80000000  |Access = GENERIC_READ
0007F904   00000001  |ShareMode = FILE_SHARE_READ
0007F908   00000000  |pSecurity = NULL
0007F90C   00000003  |Mode = OPEN_EXISTING
0007F910   00000080  |Attributes = NORMAL
0007F914   00000000  \hTemplateFile = NULL
第二次:
0007F8F8   00973440  /CALL 到 CreateFileA 来自 0097343A
0007F8FC   0007FAA8  |FileName = "C:\WINDOWS\system32\SHELL32.dll"
0007F900   80000000  |Access = GENERIC_READ
0007F904   00000001  |ShareMode = FILE_SHARE_READ
0007F908   00000000  |pSecurity = NULL
0007F90C   00000003  |Mode = OPEN_EXISTING
0007F910   00000080  |Attributes = NORMAL
0007F914   00000000  \hTemplateFile = NULL
.....
....
不再一一列举,总之都是系统的dll
无模拟的:
要么断不下来,要么断下来的如下:
0007FEA4   00941DC2  /CALL 到 CreateFileA 来自 00941DBC
0007FEA8   00946538  |FileName = "C:\Documents and Settings\Administrator\桌面\zp\zp1(无模拟).EXE"
0007FEAC   80000000  |Access = GENERIC_READ
0007FEB0   00000001  |ShareMode = FILE_SHARE_READ
0007FEB4   00000000  |pSecurity = NULL
0007FEB8   00000003  |Mode = OPEN_EXISTING
0007FEBC   00000080  |Attributes = NORMAL
0007FEC0   00000000  \hTemplateFile = NULL
再要么段在你系统的一些安全软件,或者lpk.dll啊,usp10.dll等上面了
2.若确定存在DLL模拟,您还需要手动计算下模拟的个数,计算方法:
bp CreateFileA后,不断的F9,然后观察堆栈,数系统DLL的个数,比如我这个例子,就是模拟了10个DLL,换成16进制,也就是0A
3.自己计算IAT的Start和End,计算方法,相信有过脱壳经验的都明白,到OEP后(ZP的到OEP,ESP定律即可),随便找个CALL,不断进几次就会发现了。
4.计算完上面的值,请在运行脚本前,修改相应的值,所要修改的值为IATStart,IATEnd,模拟的个数(若存在模拟,否则可以不改)
5.修改完后,可以运行脚本了。若无模拟,请直接选择step2,然后再稍后让填地址的框里直接填0即可;
若存在模拟,请选择step1,然后脚本运行中断后,记录该中断的值,接着重新运行脚本,选择step2,然后再填入刚才所记录的值
6.一般情况下,这样脱壳就完毕了,跑完脚本后,自己dump然后REC修复即可
7.若还有anti-hook,也就是FF25或FF15都被填充成了E9 ?? ?? ?? ?? 90或者E8 ?? ?? ?? ?? 90的情况,此时,你需要运行补充脚本。
因为我自己加了几个,都没能加出这个效果,所以暂时没测试补充脚本的效果如何,或许还存在的语法错误,或许还存在在逻辑错误等等,总之错误的情况可能很多很多。
因此我没有把他集成到主脚本里去,等以后完善后再集成进去。
有需要的并且有兴趣的情自己调试并自己修改下,当然有问题也可以向我反馈。
8.其他的问题,自行去发掘吧。。。。

---ximo[LCG]


代码部分引用:

/////////////////////////////////////////////////////////////////////////////////////////

//fuck Zrotectect1.4.9

//thanks hmily

//说明:

//1、使用前先修改下面几个值:IATStart和IATEnd,以及模拟的个数

//2、接着运行脚本,若第一次则输入1,第二次输入2

//3、若无模拟,请直接选择2,地址随便输入个0区域地址就行,或者直接输入0

//4、模拟个数的判断,只要bp CreateFileA,然后运行,观察堆栈,数堆栈窗口系统dll的个数即可

//just for fun

//ximo[LCG]

/////////////////////////////////////////////////////////////////////////////////////////



var count

ask "whitch step?"

mov count,$RESULT

cmp count,1

je step1

cmp count,2

je step2

ret
复制代码

主题

好友

196

积分

注册会员

发表于 2011-1-13 14:12:05 |显示全部楼层
说你妈 光是一路废话! 脚本呢? 在哪里? 你傻逼?
回复

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-4 05:38 , Processed in 0.056911 second(s), 16 queries .

返回顶部