004 .NetReactor 3.6.0.0之另类脱壳法
文章目录
- 前言
- 查壳
- 脱壳
- 修复目标程序
前言
最近一直在看脱壳的相关资料,看到了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之另类脱壳法相关推荐
- 长安链---从零到一部署Chainmaker-2.0.0
长安链部署 简介 长安链·ChainMaker具备自主可控.灵活装配.软硬一体.开源开放的突出特点,由北京微芯研究院.清华大学.北京航空航天大学.腾讯.百度和京东等知名高校.企业共同研发.取名&quo ...
- SystemImager 4.0.0中文手册
目录 第1章. SystemImager介绍 ............................................................................. ...
- 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 ...
- 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 ...
- Can't connect to MySQL server on '127.0.0.1' (10061) (code 2003)解决方法
先验证一下MySQL的服务是否开启,到计算机->管理->服务和应用程序->服务 如果服务已开启,就检查一下C:\WINDOWS\system32\drivers\etc目录下的hos ...
- 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 ...
- mysql h 127.0.0.1_MySQL 连接时尽量使用 127.0.0.1 而不是 localhost
原因 Whenever you specify "localhost" or "localhost:port" as server, the MySQL cli ...
- 【记录】我在团队合作中遇到过的胎神(扑街仔)级别前端小伙伴 之 莫名其妙配置0.0.0.0这种IP访问
废话不说上代码 K同学和Z同学,你们知道吗?你这样加0.0.0.0 host带来的结果就是npm run dev项目的时候莫名其妙会在浏览器里面弹出一个0.0.0.0的访问 K同学和Z同学,你们脑子进 ...
- 在Win 8.1上安装配置FlashDevelop5.0.0
FlashDevelop是基于.NET框架的开源软件,只能在Windows环境下面运行,相较于Flash CS和FlexBuilder, 它非常轻量级.FlashDevelop只是一个代码编辑器,而不 ...
最新文章
- 时间序列竞赛炸榜技巧。
- openMP的一点使用经验 四
- 企业网站SEO优化的四大原则
- 死信交换机与死信队列
- i-usb-storer android,i usb storer
- Wince5.0自定义工具条
- 再议 语法高亮插件的选择
- FreeRTOS移植到STM32F103
- Git 基础(九)—— Failed to push some refs to git
- 378.有序矩阵中第K小的元素
- 老掉牙的ArrayList解析它它它又来了
- 图像特征的特点及其常用的特征提取与匹配方法
- 台式计算机有线无线网卡设置,电脑无线网卡如何使用 电脑外置无线网卡详细使用图文教程...
- 计算机执行优盘上程序的过程,U盘打开后,文件变成exe执行文件怎么办-电脑自学网...
- Win10经常断开网络连接的原因
- 【致远FAQ】V8.0sp1_单位管理员账号在流程督办监控中撤销流程后,流程中的人员会收到消息提醒吗
- 计算机重启删除了应用怎么办,电脑文件被删除怎么恢复?电脑总是无故重启怎么办...
- SIRIUS更新日志|SIRIUS人脸识别更新日志|天狼星人脸识别更新日志
- 一台服务器可以架设几个不同的版本?一台服务器可以架设几个微端?
- Windows自带压缩文件工具makecab命令详解
热门文章
- 成功解决ModuleNotFoundError: No module named 'torchvision.ops'
- Dataset之CIFAR-10:CIFAR-10数据集简介、下载、使用方法之详细攻略
- Matlab:序列分析法MATLAB代码
- CV:基于Keras利用训练好的hdf5模型进行目标检测实现输出模型中的脸部表情或性别的gradcam(可视化)
- Ubuntu18.04 CUDA与cudnn安装
- Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)【转】...
- ASP入门(十一)-Session小案例
- 查看SSID的mac地址
- 跨链Cosmos(12) Cosmos插件
- (chap6 Http首部) 请求首部字段 RefererTE User-Agent