Themida 2.1.2.0保护的.net程序的脱壳方法

Eddy 发布于2012-10-26 16:15:5 分类: 技术心得 已浏览loading 网友评论2条 我要评论

 用OD加载程序,OD调试设置为“Break on new module(DLL)”,至到mscorlib.dll加载时,记下以下两个值:

00400168    08200000    DD 00002008          ;  COM+ Runtime Header address = 2008

0040016C    48000000    DD 00000048          ;  Import Address Table size = 48 (72.)

然后dump出程序,这时候的程序已经可以载入Reflector进行分析了,但是还不能直接运行,需要修复。

用CFF Explorer打开dump出的程序,用上面的两个值修复.NET MetaData Directory RVA、.NET MetaData Directory Size;

接下来删除不需要的区段(保留最前面的两个区段即可),末尾新添加一个区段(大小为0C),将重定位表地址指向该区段,重定位表大小为0C;

修复sizeOfImage,按节对齐修复各区段RawSize,修正各区段属性(可参考任一未加壳的.net程序);

最后修正pe的入口地址,可搜索“CorExeMain”关键字,后面会有一串FF25XXXXXXXX,这个串的地址转为RVA即为程序的入口地址。

至此,脱壳完成!

已经有(2)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/technique/852.html     欢迎订阅Eddy Blog

  1. 发表于2013-5-20 17:24:50

    大牛看了你的文章,我实践操作了一下,为什么我的两个值为 下面的,

    6EFA01E8 00000000 DD 00000000 ; COM+ Runtime Header address = 0x0
    6EFA01EC 00000000 DD 00000000 ; Import Address Table size = 0x0

    Eddy 于 2013-5-23 13:14:16 回复
    不是.net程序吧

  2. 发表于2013-8-8 2:58:41

    说的详细一点好么。大神。。看不懂啊。

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言