文章目录

  • 前言
  • 查壳
  • 脱壳
  • 修复目标程序

前言

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

查壳

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

脱壳

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

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

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

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

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

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

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

修复目标程序

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

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

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

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

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

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

回到Directoy部分,将正确的RVA填入。至于Size我们可以根据一个公式计算得出:MetaDataSize=Import Directory RVA-MetaDataRVA,Import Directory RVA的值如下图:

最后算出Size为0x194C。

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

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

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

点击文件头 找到Characteristics,双击

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

OK 程序完美运行,这个壳也算是脱完了。

需要相关文件可以到我的Github下载:https://github.com/TonyChen56/Unpack-Practice

004 .NetReactor 3.6.0.0之另类脱壳法相关推荐

  1. 长安链---从零到一部署Chainmaker-2.0.0

    长安链部署 简介 长安链·ChainMaker具备自主可控.灵活装配.软硬一体.开源开放的突出特点,由北京微芯研究院.清华大学.北京航空航天大学.腾讯.百度和京东等知名高校.企业共同研发.取名&quo ...

  2. SystemImager 4.0.0中文手册

    目录 第1章. SystemImager介绍 ............................................................................. ...

  3. ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0

    错误内容如下 ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0 Show in Project Structure d ...

  4. No cached version of com.android.tools.build:gradle:2.0.0 available for offline mode.

    异常场景 从AS2.0升级到2.1,重新编译工程后,抛出了如下异常 Error:A problem occurred configuring root project 'AndroidStudioPr ...

  5. Can't connect to MySQL server on '127.0.0.1' (10061) (code 2003)解决方法

    先验证一下MySQL的服务是否开启,到计算机->管理->服务和应用程序->服务 如果服务已开启,就检查一下C:\WINDOWS\system32\drivers\etc目录下的hos ...

  6. pycharm中报错:Error: failed to send plot to http://127.0.0.1:63342

    pycharm中报错:Error: failed to send plot to http://127.0.0.1:63342 import matplotlib.pyplot as plt impo ...

  7. mysql h 127.0.0.1_MySQL 连接时尽量使用 127.0.0.1 而不是 localhost

    原因 Whenever you specify "localhost" or "localhost:port" as server, the MySQL cli ...

  8. 【记录】我在团队合作中遇到过的胎神(扑街仔)级别前端小伙伴 之 莫名其妙配置0.0.0.0这种IP访问

    废话不说上代码 K同学和Z同学,你们知道吗?你这样加0.0.0.0 host带来的结果就是npm run dev项目的时候莫名其妙会在浏览器里面弹出一个0.0.0.0的访问 K同学和Z同学,你们脑子进 ...

  9. 在Win 8.1上安装配置FlashDevelop5.0.0

    FlashDevelop是基于.NET框架的开源软件,只能在Windows环境下面运行,相较于Flash CS和FlexBuilder, 它非常轻量级.FlashDevelop只是一个代码编辑器,而不 ...

最新文章

  1. 时间序列竞赛炸榜技巧。
  2. openMP的一点使用经验 四
  3. 企业网站SEO优化的四大原则
  4. 死信交换机与死信队列
  5. i-usb-storer android,i usb storer
  6. Wince5.0自定义工具条
  7. 再议 语法高亮插件的选择
  8. FreeRTOS移植到STM32F103
  9. Git 基础(九)—— Failed to push some refs to git
  10. 378.有序矩阵中第K小的元素
  11. 老掉牙的ArrayList解析它它它又来了
  12. 图像特征的特点及其常用的特征提取与匹配方法
  13. 台式计算机有线无线网卡设置,电脑无线网卡如何使用 电脑外置无线网卡详细使用图文教程...
  14. 计算机执行优盘上程序的过程,U盘打开后,文件变成exe执行文件怎么办-电脑自学网...
  15. Win10经常断开网络连接的原因
  16. 【致远FAQ】V8.0sp1_单位管理员账号在流程督办监控中撤销流程后,流程中的人员会收到消息提醒吗
  17. 计算机重启删除了应用怎么办,电脑文件被删除怎么恢复?电脑总是无故重启怎么办...
  18. SIRIUS更新日志|SIRIUS人脸识别更新日志|天狼星人脸识别更新日志
  19. 一台服务器可以架设几个不同的版本?一台服务器可以架设几个微端?
  20. Windows自带压缩文件工具makecab命令详解

热门文章

  1. 成功解决ModuleNotFoundError: No module named 'torchvision.ops'
  2. Dataset之CIFAR-10:CIFAR-10数据集简介、下载、使用方法之详细攻略
  3. Matlab:序列分析法MATLAB代码
  4. CV:基于Keras利用训练好的hdf5模型进行目标检测实现输出模型中的脸部表情或性别的gradcam(可视化)
  5. Ubuntu18.04 CUDA与cudnn安装
  6. Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)【转】...
  7. ASP入门(十一)-Session小案例
  8. 查看SSID的mac地址
  9. 跨链Cosmos(12) Cosmos插件
  10. (chap6 Http首部) 请求首部字段 RefererTE User-Agent