鬼手56 发表于 2019-3-12 19:12

.NetReactor 3.6——体验另类的脱壳法

本帖最后由 鬼手56 于 2019-3-12 20:01 编辑

## 前言

最近一直在看脱壳的相关资料,看到了Tuts4you社区脱壳脚本的教程,这个壳我感觉很不错挺有意思的,于是打算将内容整理下分享出来。

## 查壳

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109awsw8rj30g609m3z5.jpg)

这个壳是.NetReactor 3.6.0.0的版本。根据作者的介绍,这个壳只是一个包装器,它包装目标程序,然后将其全部解包到内存中执行。但是这是一种不安全的方法,因为有人可以将内存中的目标程序转储回文件并完全恢复程序集。这个壳的重点在于转储之后的修复,需要对PE文件有一定的了解。

## 脱壳

接下来直接载入OD,F9让程序运行起来。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109ax2ev6j30ou0djjta.jpg)

接着调出内存窗口,为了锁定目标程序被解压的位置,因为这个crackme实际上也是作者写的,所以选择通过搜索关键字符串的方法,搜索Crackme

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109awusn6j30ih0bhdge.jpg)

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109awv978j30ob08p0tk.jpg)

搜索到关键字符串之后向上滚动,查找PE文件,如果找到了说明这里就是目标文件解压缩的地方。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109az1vcvj30nf0ddmyn.jpg)

经过搜索和寻找,我们在第六次搜索结果中找到了要找的PE文件。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109ax04d3j30ir0ar756.jpg)

接着右键->备份->保存数据到文件。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109az9xbbj30iq07ywer.jpg)

选择保存类型为任何文件,并修改后缀名为exe。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109azefbnj30iw04hmx6.jpg)

接着测试运行一下,弹出一个错误框,无法在电脑上运行。这很正常,因为直接dump下来的文件在PE头总是会出现问题。因为我是在本机上跑的,如果是W7的话应该是显示不是有效的W32程序。

## 修复目标程序

接下来用CFF Explorer这款PE工具来修复一下目标程序。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109aznfjpj30p00cqmxr.jpg)

载入目标程序,点击Header部分,错误提示为Out of memory。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109b0s6plj30p10dnmyn.jpg)

接下来进入到Driectory部分,修复MetaData Header的错误。我们需要修复这个错误的RVA和Size,Size明显是错的,太小了。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109azqp4yj30jw0bojs7.jpg)

接着来到Address Converter部分,点击这个放大镜,查找字符串BSJB。至于为什么搜索这么一串字符串,作者给出的解释是这个字符串的Offset就是要修复的Meta Data的Offset。(我也是一脸蒙蔽 这解释有点太勉强了吧)

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109b0vd48j30ji08jglr.jpg)

接着点击查找,找到了0x9400这个地址,那么Meta Data的Offset就是0x9400。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109azr4gbj30ea082q2u.jpg)

接着把9400输入到Offset中,会自动计算出我们要的RVA是0xA400。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109b1hodij30pg0bf0tz.jpg)

回到Directoy部分,将正确的RVA填入。至于Size我们可以根据一个公式计算得出:MetaDataSize=Import Directory RVA-MetaDataRVA,Import Directory RVA的值如下图:
![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109b1isxfj30qn0ctjsv.jpg)

最后算出Size为0x194C。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109b1nh4uj30oe0dgtae.jpg)

接着修改回正确的RVA,然后点击保存。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109b3lnhqj30kq05vwew.jpg)

接着再次双击测试运行,还是无法运行。这里作者的原话是根据我之前的经验,我应该是忘记修改文件头属性了。

不得不感叹大神的经验就是强大。好吧 继续修复

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109b3miz6j30oo0ayjsf.jpg)

点击文件头 找到Characteristics,双击

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109b1ncggj309908taa4.jpg)

属性显示这是一个DLL,难怪会报错。把勾去掉,再次保存。

![](http://ww1.sinaimg.cn/large/006Rs2Lugy1g109b91dnrj308x04edgf.jpg)

OK 程序完美运行,这个壳也算是脱完了。
最后附上相关文件 也可以到我的Github下载
Github:https://github.com/TonyChen56/Unpack-Practice
CSDN:https://blog.csdn.net/qq_38474570/article/details/88426831

wwh1004 发表于 2019-3-13 22:19

朱朱你堕落了 发表于 2019-3-12 23:12
问下楼主,你贴子中的方法,对于NetReactor 4.x的管用吗?套路是否一样...

这种是对付.NET Reactor的Native EXE File功能的,就是把程序集打包到一个非托管的程序里,全版本通用。文章中要修复rva应该是没把内存格式的PEImage转换回文件格式。

鬼手56 发表于 2019-3-12 20:17

哈哈哈 终于好了 被CSDN给坑了呢 本来以为可以直接复制粘贴过来没想到图片全挂

KaQqi 发表于 2019-3-12 19:26

你的图片炸了

AmIzero 发表于 2019-3-12 19:27

在这里输入图片描述??

jccforever 发表于 2019-3-12 19:30

图片全挂了!!!!

XXTK 发表于 2019-3-12 19:36

楼主可能要重新编辑一下,图片全看不到

zyz 发表于 2019-3-12 20:28

感谢楼主,学习了

疯狂的小精灵 发表于 2019-3-12 20:39

学习了,非常感谢

小小小青年 发表于 2019-3-12 21:47

这个方法很早就发出来了,你这只算照搬了一次。

朱朱你堕落了 发表于 2019-3-12 23:12

问下楼主,你贴子中的方法,对于NetReactor 4.x的管用吗?套路是否一样...
页: [1] 2 3
查看完整版本: .NetReactor 3.6——体验另类的脱壳法