`

初识exe程序---[反汇编]小感(PEiD+DEDE)

阅读更多

近期由于一个项目的需要,我初步接触了exe程序反汇编。折腾了好几天终于见到了那个程序中急需的算法的真面目了。回顾整个过程,小有感悟。为记念初识程序反汇编的心路历程,特记录下对程序反汇编过程的粗浅感受。

一、工作环境:
  1查壳工具:PEiD(用于初步确定exe程序是否加壳以及使用何种开发软件编写);
  2反编译工具:DeDe(经过查壳工具检查,将要被反汇编的程序是用“BorlandC++1999”编写的,所以选用专门反编译Delphi程序的DeDe;用于初步确定程序模块、函数方法划分对应exe程序相应汇编指令地址的位置);
  3反汇编动态调试工具:OllyICE(即,OD;用于动态反汇编调试程序的相关代码逻辑);
  4开发环境:VS.NET 2005
  5其他工具:EditPlus、记事本、计算器等若干;
二、基础知识:
  1汇编程序设计:主要深入了解程序数据存放、堆栈使用、子程序调用等技巧;不同类型数据的地址跳转规则(一般都是跳转该类型长度个位置);
  2c++程序设计:基本语法结构;指针、数据类型的使用和控制;
  3相关工具软件的基本使用方法;
三、工作过程:
我的反汇编大概过程是:
查壳->脱壳、判断开发程序使用的环境->反编译->初步定位主要功能模块或函数的汇编指令起始、终止地址->反汇编准备->查找程序中的特征字符串或特征值,进一步确定需要反汇编的代码逻辑的位置->开始反汇编调试运行,分析需要反汇编的代码逻辑的具体过程->将分析出来的逻辑流程使用c++语言实现
1查壳:
运行PeiD,打开要反汇编的exe程序,在这里姑且称之为:test.exe吧。
如示意图1

多项扫描上面那行“Microsoft Visual C++ 7.0 Dll Method3”就是该程序的开发环境了。
接下来电击窗口右下角的“>>”按钮,再来看看该程序是否加壳,如示意图2

分别点击熵值“EP校验快速校验这三行最右侧的“-”按钮,就可以看到是否加壳的提示了。
哈哈,test.exe程序太干净了。没有任何加壳,可以选用相应的反编译工具进行下一步啦。 ^_^
2反编译:
“1中只是示意图,我实际反编译的程序是由“BorlandC++1999”编写的,所以选择DeDe 3.5作为反编译工具;DeDe3.5的具体使用方法,请自行在网上查阅。
示意图3


3
初步定位主要模块、函数对应的汇编指令地址:
根据反编译出来的部分类和方法的代码框架,确定了两组可疑的汇编指令地址段。
如示意图4

注意选择过程按钮,如上图所示。然后双击右下侧列表中的Button3Click,就可以查看该方法对应的函数体了。当然,这样看到的函数体不会是我们一般意义上的函数体,这函数体只有一个框架是高级语言的样子,函数体内部都是汇编代码,不过这已经足够了,后面我们还要进行详细的反汇编调试分析呢。嘿嘿。函数体示意图5如下:

好,记下这段函数的首地址、尾地址,开始尝试反汇编操作。

4
反汇编准备:
使用ODOllyICE)打开test.exe程序,如示意图6

找到刚才记录下的首地址、尾地址。如上图中两个黑圆点处的红条,分别是首地址:00401EC4、尾地址:00401EF5

5
反汇编调试:
根据步骤4中定位的汇编指令地址,再结合示意图6[ASCII”Hello OD”][ASCII”this is OllyDbg DeAsm”]等关键字符串,进行所有匹配字符串的检索,就可以开始使用OD进行调试了。具体使用方法请参阅OD自带的help文件。
逐句分析所需部分的汇编代码逻辑流程。其间可以用其他一些辅助工具来帮助记录动态分析过程中的数值传递轨迹及变换方法。

6
C++实现:
根据分析出的汇编代码逻辑,使用C++实现同样的功能。
备注:在定位反汇编所需的代码位置时,除了一些ASCII字符串的定位方法,还能通过程序中声明的一些常量字符串、映射控制矩阵、计数器等常量来进行更为精确的定位。
以上就是我初识程序反汇编主要过程的记录。注意:由于“保密协议”的限制,在此不便过多讨论项目代码细节。还望大家敬请原谅。写的很粗浅,希望有反汇编经验的前辈不吝指教,在此,先谢过啦。哈哈 ^_^

本文出自 “空中的鱼” 博客,请务必保留此出处http://airfish.blog.51cto.com/358752/264819

分享到:
评论

相关推荐

    OD+PEID+OD教程

    OD PEID OD教程.chm 脱壳 OD PEID OD教程.chm 脱壳

    OD+PEID脱壳工具包

    OD+PEID脱壳工具包 保证可以使用,本人亲测........希望大家多多支持.

    免杀工具包组合(里面有peid+multiccl+c32asm)

    我用来做普通免杀的工具,里面有peid+multiccl+c32asm,不会的可以去其他论坛或搜索学习一下。

    peid.rar程序

    peid程序。利用程序可以查看程序。

    peid 文件大小插件

    peid 文件大小插件 peid 文件大小插件

    PEiD,PEiD,PEiD

    PEiD,PEiD,PEiD,PEiD,PEiDPEiD,PEiD,PEiD

    PEID-程序壳检测软件

    iD是一款著名的查壳工具,其功能强大,现在有软件很多都加了壳,给破解汉化带来非常大的不便,PEiD几乎可以侦测出所有的壳,其数量已超过470 种PE文档 的加壳类型和签名,另外还可识别出EXE文件是用什么语言编写的,...

    PEiD-v0.95-20081103绿色免安装.rar

    PEiD​是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档 的加壳类型和签名。

    peid.exe汉化版

    经典难求版 查看是什么软件编译出来的,或者加过什么壳

    DLL函数查看器 v3.5

    5.将PEID userdb.txt 放置到程序目录下可以实现查壳 6.如果将易语言API伴侣DATA下文件复制到本目录,可获得已知函数信息.这首先要感谢API伴侣的作者 7.在目录下建立 "ViewApi.cfg" ,设置信息将写入配置文件可方便...

    PEiD0.95.zip

    PEiD detects most common packers, cryptors and compilers for PE files. It can currently detect more than 600 different signatures in PE files. PEiD is special in some aspects when compared to other ...

    HA.PEiD.0.95

    PEiD detects most common packers, cryptors and compilers for PE files. It can currently detect more than 600 different signatures in PE files. PEiD is special in some aspects when compared to other ...

    脱壳软件Peid使用方法

    即程序的入口地址。查入口点的软件有很多,几乎所有的PE编辑软件都可以查看入口点。 2、查看软件加的什么壳。这个软件加的是UPX 0.89.6 插件应用。最常用的插件就是脱壳。Peid的插件里面有个通用脱壳器,能脱大部分...

    peid查壳 汇编学习

    peid 汇编 peid查壳 很简单的工具 易于学习

    PEiD0.95PEiD0.95

    PEiD 0.95

    PEiD 0.95全插件版--汉化

    PEiD 0.95全插件版--汉化 全功能 个人修改版本!

    OllyDBG2汉化版+PEiD

    Ollydbg2汉化版,含各种插件。附带PEiD查壳软件。全绿色。

    PEID官方特征库(2012-4-24)

    PEID官方特征库(2012-4-24)

    PEID v0,92(汉化版)

    PEID v0,92(汉化版) 查壳工具

    PEiD_V0.95汉化版---吾爱破解抢鲜版.rar

    脱壳工具:PEiD_V0.95汉化版---吾爱破解抢鲜版PEiD_V0.95汉化版---吾爱破解抢鲜版

Global site tag (gtag.js) - Google Analytics