??xml version="1.0" encoding="utf-8" standalone="yes"?>
一、工作环境:
1?/span>查壳工具Q?span>PEiDQ用于初步确?span>exeE序是否加壳以及使用何种开发Y件编写)Q?/font>
2?/span>反编译工PDeDeQ经q查壛_h查,要被反汇编的程序是?span>“BorlandC++
3?/span>反汇~动态调试工POllyICEQ即Q?span>ODQ用于动态反汇编调试E序的相关代码逻辑Q;
4?/span>开发环境:VS.NET 2005Q?/font>
5?/span>其他工具Q?span>EditPlus、记事本、计器{若qԌ
1?/span>汇编E序设计Q主要深入了解程序数据存放、堆栈用、子E序调用{技巧;不同cd数据的地址跌{规则Q一般都是蟩转该cd长度个位|)Q?/font>
2?/span>c++E序设计Q基本语法结构;指针、数据类型的使用和控Ӟ
3?/span>相关工具软g的基本用方法;
我的反汇~大概过E是Q?/font>
查壳->脱壳、判断开发程序用的环境->反编?/span>->初步定位主要功能模块或函数的汇编指o起始、终止地址->反汇~准?/span>->查找E序中的特征字符串或特征|q一步确定需要反汇编的代码逻辑的位|?span>->开始反汇编调试q行Q分析需要反汇编的代码逻辑的具体过E?span>->分析出来的逻辑程使用c++语言实现?/font>
q行PeiDQ打开要反汇编?span>exeE序Q在q里姑且UC为:test.exe吧?/font>
如示意图1Q?span> 
“多项扫描”上面那行“Microsoft Visual C++ 7.0 Dll Method
接下来电ȝ口右下角?span>“>>”按钮Q再来看看该E序是否加壳Q如C意?span>2Q?/font>
分别点击“熵?span>”?span>“EP校验”?span>“快速校?span>”q三行最右侧?span>“-”按钮Q就可以看到是否加壳的提CZ?/font>
哈哈Q?span>test.exeE序太干净了。没有Q何加I可以选用相应的反~译工具q行下一步啦?span> ^_^
“1?span>”中只是示意图Q我实际反编译的E序是由“BorlandC++
C意?span>3Q?/font>
注意选择“q程”按钮Q如上图所C。然后双d下侧列表中的Button3ClickQ就可以查看该方法对应的函数体了。当Ӟq样看到的函C不会是我们一般意义上的函CQ这函数体只有一个框架是高语言的样子,函数体内部都是汇~代码,不过q已l够了Q后面我们还要进行详l的反汇~调试分析呢。嘿ѝ函CC意?span>5如下Q?/font>

好,Cq段函数的首地址、尾地址Q开始尝试反汇编操作?/font>
4?nbsp;反汇~准备:
使用ODQ?span>OllyICEQ打开test.exeE序Q如C意?span>6Q?/font>

扑ֈ刚才记录下的首地址、尾地址。如上图中两个黑圆点处的U条Q分别是首地址Q?span>00401EC4、尾地址Q?span>00401EF5?/font>
5?nbsp;反汇~调试:
Ҏ(gu)步骤4中定位的汇编指o地址Q再l合C意?span>6?span>[ASCII”Hello OD”]?span>[ASCII”this is OllyDbg DeAsm”]{关键字W串Q进行所有匹配字W串的检索,可以开始?span>ODq行调试了。具体用方法请参阅OD自带?span>help文g?/font>
逐句分析所需部分的汇~代码逻辑程。其间可以用其他一些辅助工h帮助记录动态分析过E中的数g递轨q及变换Ҏ(gu)?/font>
6?span> C++实现Q?/font>
]]>