脱壳第二讲,手动脱壳PECompact 2.x

时间:2022-09-05 23:39:00

              脱壳第二讲,手动脱壳PECompact 2.x

PS: 此博客涉及到PE格式.所以观看此博客你要熟悉PE格式

首先,逆向inc2l这个工具,汇编中可能会用的 inc头文件转换为lib的工具

但是他有壳,先查壳.

脱壳第二讲,手动脱壳PECompact 2.x

发现是这个壳

利用Esp定律,脱掉这个壳.

首先,inc2l.exe是32位的,所以要放到虚拟机中.

一丶OD打开分析

1.OD分析

脱壳第二讲,手动脱壳PECompact 2.x

发现,首先给eax赋值,然后压栈eax,那么eax肯定会访问,那么我们F8到push eax的下面,也就是4022EA的位置

2.查看栈数据

查看栈数据.

脱壳第二讲,手动脱壳PECompact 2.x

那么在栈位置12FFC0的位置,肯定会有访问,我们数据窗口 定位到ESP的位置,也就是0012FFC0

3.在数据窗口定位栈顶位置.

CTRL + G命令定位.

脱壳第二讲,手动脱壳PECompact 2.x

由于方便一起截图,事先已经定位过来了.

4.针对栈内容下硬件访问断点(4个字节)

选中栈中地址的值,也就是 push 的eax的值,下硬件访问断点

脱壳第二讲,手动脱壳PECompact 2.x

5.F9运行起来,直到跟到我们的模块分析

第一次F9

脱壳第二讲,手动脱壳PECompact 2.x

依次类推,下方肯定会跳转到我们的程序里面.

脱壳第二讲,手动脱壳PECompact 2.x

一直找到一个跳转到eax的位置

此时EAX的值是 004022E4

而JMP的位置是0040AC1E

由此可以判断出,入口点的位置是4022E4

为什么?

因为壳一般加密之后,如果跳转到入口点,那么它是一个远跳

此时看JMP的地址,和跳的位置就是一个远跳.

6.F7跟入JMP eax

此时如果F7跟进来了,那么就是下面的样子

脱壳第二讲,手动脱壳PECompact 2.x

真正的入口点

8.使用OD插件,Dump内存,脱壳.

此时我们可以使用OD插件的dump内存的插件,在入口点位置脱壳了.

脱壳第二讲,手动脱壳PECompact 2.x

弹出界面:

脱壳第二讲,手动脱壳PECompact 2.x

点击脱壳,选择位置,存储你脱壳后的文件.

脱壳第二讲,手动脱壳PECompact 2.x

此时OD不要关闭.

9.使用导入表修复工具,修复脱壳后的IAT表

(关于IAT表请熟悉PE格式后看)

此时OD调试的进程不要关闭,也就是带壳的inc2l程序,如果关闭了,那么重新进行上面几步,只需到定位到入口点即可.

现在脱壳完毕,IAT表肯定让壳给抹掉了,而OD的dump工具修复的IAT表也不全,所以使用一个IAT表格修复工具修复.

我用的工具是 ImportREC1.7  具体下载可以去下载看雪大礼包.

(当然我会上传,但是此工具比较老,会有Bug,一会修复完之后手工修复即可.)

9.1打开工具.并选择我们OD挂起的未脱壳的inc2l的程序.

脱壳第二讲,手动脱壳PECompact 2.x

9.2 OEP位置给我们的OPE的偏移

OEP位置给我们的OEP的偏移,或者让它自动查找.

然后点击Get Imports

脱壳第二讲,手动脱壳PECompact 2.x

9.3 点击 Fix Dump 给我们脱壳的程序修复

现在导入表已经有了,那么点击Fix Dump给我们刚才脱壳后的程序修复一下.

脱壳第二讲,手动脱壳PECompact 2.x

9.4运行我们的脱壳程序查看是否可以运行.

脱壳第二讲,手动脱壳PECompact 2.x

提示错误,Winhex打开,查看PE格式.

脱壳第二讲,手动脱壳PECompact 2.x

首先,我们发现我们的导入表,被我们的导入表修复工具加了一个新的节, 也就是mackt的节

那么我们此时我们首先定位 sizeofHead (DOS头+ NT头 + 节表的总大小)我们看下是多少.

有没有自动给我们增加.

脱壳第二讲,手动脱壳PECompact 2.x

并没有增加,大小还是200,那么是错的,因为加了一个分页

也就是mackt的位置的大小并没有加上,也不是说没有加上,而是正好在200的位置处,也就是文件中1F0的位置.

那么这个程序出BUG了,此时我们改为1000 或者你自己看下多大.

脱壳第二讲,手动脱壳PECompact 2.x

保存文件,重新打开我们的壳程序试一下还会崩溃吗.

为了方便,拷贝到住电脑上,然后命令行打开查看.

脱壳第二讲,手动脱壳PECompact 2.x

成功运行,因为这个程序点开会一闪而过,所以截图不了,所以命令行打开,出来这个界面就成功了.

课堂代码资料:  链接:http://pan.baidu.com/s/1kVL1f6Z 密码:2ltj

作者:IBinary
出处:http://www.cnblogs.com/iBinary/
版权所有,欢迎保留原文链接进行转载:)

脱壳第二讲,手动脱壳PECompact 2.x的更多相关文章

  1. 脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律

    脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律 一丶什么是ESP定律 首先我们要明白什么是壳.壳的作用就是加密PE的. 而ESP定律就是壳在加密之前,肯定会保存所有寄存器环境,而出来的时候, ...

  2. 手动脱PeCompact 2.20壳实战

    作者:Fly2015 PeCompact壳又是一个没有听说过的壳,需要脱壳的程序是吾爱破解培训的第一课的选修作业四.最近对脱壳有点上瘾了,当然也遭受了脱壳受挫的无奈,但是比较幸运还是把这个壳给搞了. ...

  3. upx 手动脱壳

    查壳 UPX 0.89.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo upx这类压缩壳手动脱壳非常简单. 一.查找oep ...

  4. 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

    32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...

  5. PE文件格式详解,第二讲,NT头文件格式,以及文件头格式

    PE文件格式详解,第二讲,NT头文件格式,以及文件头格式 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) PS:本篇博客 ...

  6. WebApp 安全风险与防护课堂(第二讲)开课了!

    本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在昨天的公开课中,由于参与的小伙伴们积极性和热情非常高,我们的讲师Carl ...

  7. POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取

    第二讲 1.创建一个时间格式的单元格 Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个 ...

  8. Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

    原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  9. 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的

    [军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的   之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...

随机推荐

  1. rsyslog及logrotate小结

    [root@node1 logrotate.d]# ls dracut haproxy httpd mcelog nginx ppp psacct syslog yum   yum install n ...

  2. python:列表与元组

    1.python包含六种内建的序列,列表和元组是其中的两种,列表可以修改,元组则不能 2.通用序列操作 2.1 索引:和C#的区别是索引可以为负数,最后一个元素索引为-1,索引超出范围会报错 例:&g ...

  3. elasticsearch,python包pyes进行的处理

    elasticsearch:高性能搜索引擎,官网:https://www.elastic.co/products/elasticsearch/ 对于它相信大家都不陌生,es的使用已经广泛存在 各大网站 ...

  4. PHP中“简单工厂模式”实例讲解

    原创文章,转载请注明出处:http://www.cnblogs.com/hongfei/archive/2012/07/07/2580776.html 简单工厂模式:①抽象基类:类中定义抽象一些方法, ...

  5. android录像增加时间记录(源码里修改)

    需要做一个功能,录像和播放时都显示录时的时间,参考文章链接找不到了,不好意思,这里记录一下,防止下次找不到了.另一篇关于源码录像的流程请参考 http://www.verydemo.com/demo_ ...

  6. ExpandableListView二级列表

    package com.example.dajj; import android.os.Bundle;import android.app.Activity;import android.view.M ...

  7. JSON数据解析(转)

    上篇随笔详细介绍了三种解析服务器端传过来的xml数据格式,而对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三种格式,那么本篇随笔将讲解一下json这个知识点,包括如何通过 ...

  8. Winform---文件夹操作

    一.文件夹的操作 private void button1_Click(object sender, EventArgs e) { //文件夹操作 ////新建文件夹 //Directory.Crea ...

  9. Js中的window.parent ,window.top,window.self详解

    在应用有frameset或者iframe的页面时,parent是父窗口,top是最*父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ...

  10. TestNG进行接口测试,脚本及可维护性框架

    注: 以下内容引自http://blog.csdn.net/u010321474/article/details/49977969 TestNG进行接口测试,脚本及可维护性框架 原创 2015年11月 ...