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

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

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

但是他有壳,先查壳.

发现是这个壳

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

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

一丶OD打开分析

1.OD分析

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

2.查看栈数据

查看栈数据.

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

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

CTRL + G命令定位.

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

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

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

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

第一次F9

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

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

此时EAX的值是 004022E4

而JMP的位置是0040AC1E

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

为什么?

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

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

6.F7跟入JMP eax

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

真正的入口点

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

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

弹出界面:

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

此时OD不要关闭.

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

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

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

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

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

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

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

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

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

然后点击Get Imports

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

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

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

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

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

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

有没有自动给我们增加.

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

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

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

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

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

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

课堂代码资料:  链接: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. Java并发编程 Volatile关键字解析

    volatile关键字的两层语义 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了 ...

  2. csv文件读取

    from urllib.request import urlopen from io import StringIO import csv data = urlopen("http://py ...

  3. Shiro第一篇【Shiro的基础知识、回顾URL拦截】

    Shiro基础知识 在学习Shiro这个框架之前,首先我们要先了解Shiro需要的基础知识:权限管理 什么是权限管理? 只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安 ...

  4. JDBC数据库之添加数据

    通过JDBC向数据库中添加数据,可以使用INSERT语句实现插入数据SQL语句,对于SQL语句中的参数可以只用占位符"?"代替,然后通过PreparedStatement对其赋值以 ...

  5. .NET Core 使用RabbitMQ

    RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的 ...

  6. MonoDeveloper 快捷键

    注:环境是Unity3D 5.0.2f1自带的MonoDevelop Ctrl+X 剪切功能.另外,光标放在一行的任意位置(不选中任何内容),使用快捷键,将把这一行剪切并删除此行,这个特性非常好用 C ...

  7. webView 不能复制解决方案

    开发中遇到部分机型--主要是系统低于4.0,如果调用了WebView.setWebChromeClient的方法,则没办法长按复制文字 查了一下是系统的一个bug  https://bugzilla. ...

  8. java程序员该工作还是游戏?

    前阵子我终于下定决心,删掉了硬盘里所有的游戏. 身为一个程序猿,每天都要和各种新技术打交道,闲暇时间,总还得看一下各大论坛,逛逛博客园啥的,给自己充充电.游戏的话,其实我自小就比较喜欢,可以算是一种兴 ...

  9. jenkins~集群分发功能的具体实现

    前一讲主要说了jenkins分发的好处<jenkins~集群分发功能和职责处理>,它可以让具体的节点干自己具体的事,比如windows环境下的节点,它只负责编译,发布windows的生态环 ...

  10. 【转】Mapreduce部署与第三方依赖包管理

    Mapreduce部署是总会涉及到第三方包依赖问题,这些第三方包配置的方式不同,会对mapreduce的部署便捷性有一些影响,有时候还会导致脚本出错.本文介绍几种常用的配置方式: 1. HADOOP_ ...