??xml version="1.0" encoding="utf-8" standalone="yes"?>久久SE精品一区二区,色偷偷偷久久伊人大杳蕉,欧美精品一区二区久久http://www.shnenglu.com/luqingfei/archive/2010/08/11/123040.html路青?/dc:creator>路青?/author>Wed, 11 Aug 2010 02:44:00 GMThttp://www.shnenglu.com/luqingfei/archive/2010/08/11/123040.htmlhttp://www.shnenglu.com/luqingfei/comments/123040.htmlhttp://www.shnenglu.com/luqingfei/archive/2010/08/11/123040.html#Feedback0http://www.shnenglu.com/luqingfei/comments/commentRss/123040.htmlhttp://www.shnenglu.com/luqingfei/services/trackbacks/123040.htmlIZ的鱼” 博客Q出?a >http://airfish.blog.51cto.com/358752/264819

 
q期׃一个项目的需要,我初步接触了exeE序反汇~。折腾了好几天终于见C那个E序中急需的算法的真面目了。回整个过E,有感悟。ؓ记念初识E序反汇~的心\历程Q特记录下对E序反汇~过E的_浅感受?/font>

一、工作环境:
  1?/span>查壳工具Q?span>PEiDQ用于初步确?span>exeE序是否加壳以及使用何种开发Y件编写)Q?/font>
  2?/span>反编译工PDeDeQ经q查壛_h查,要被反汇编的程序是?span>“BorlandC++ 1999”~写的,所以选用专门反编?span>DelphiE序?span>DeDeQ用于初步确定程序模块、函数方法划分对?span>exeE序相应汇编指o地址的位|)Q?/font>
  3?/span>反汇~动态调试工POllyICEQ即Q?span>ODQ用于动态反汇编调试E序的相关代码逻辑Q;
  4?/span>开发环境:VS.NET 2005Q?/font>
  5?/span>其他工具Q?span>EditPlus、记事本、计器{若qԌ
 
二、基知识Q?/font>
  1?/span>汇编E序设计Q主要深入了解程序数据存放、堆栈用、子E序调用{技巧;不同cd数据的地址跌{规则Q一般都是蟩转该cd长度个位|)Q?/font>
  2?/span>c++E序设计Q基本语法结构;指针、数据类型的使用和控Ӟ
  3?/span>相关工具软g的基本用方法;
 
三、工作过E:
 我的反汇~大概过E是Q?/font>
查壳->脱壳、判断开发程序用的环境->反编?/span>->初步定位主要功能模块或函数的汇编指o起始、终止地址->反汇~准?/span>->查找E序中的特征字符串或特征|q一步确定需要反汇编的代码逻辑的位|?span>->开始反汇编调试q行Q分析需要反汇编的代码逻辑的具体过E?span>->分析出来的逻辑程使用c++语言实现?/font>
 
1?nbsp;查壳Q?/span>
q行PeiDQ打开要反汇编?span>exeE序Q在q里姑且UC为:test.exe吧?/font>
如示意图1Q?span>

多项扫描上面那行“Microsoft Visual C++ 7.0 Dll Method 3”是该程序的开发环境了?/font>
接下来电ȝ口右下角?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>  ^_^
 
2?nbsp;反编译:
“1?span>”中只是示意图Q我实际反编译的E序是由“BorlandC++ 1999”~写的,所以选择DeDe 3.5作ؓ反编译工PDeDe3.5的具体用方法,误行在|上查阅?/font>
C意?span>3Q?/font>

 
3
?nbsp;初步定位主要模块、函数对应的汇编指o地址Q?/font>
Ҏ反编译出来的部分cdҎ的代码框Ӟ定了两l可疑的汇编指o地址Dc?/font>
如示意图4Q?/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;反汇~调试:
Ҏ步骤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及变换Ҏ?/font>

6
?span> C++实现Q?/font>
Ҏ分析出的汇编代码逻辑Q?span>C++实现同样的功能?/font>
 
备注Q在定位反汇~所需的代码位|时Q除了一?span>ASCII字符串的定位ҎQ还能通过E序中声明的一些常量字W串、映控制矩c计数器{常量来q行更ؓ_的定位?/font>
 
 
 以上是我初识程序反汇编主要q程的记录。注意:׃“保密协议”的限Ӟ在此不便q多讨论目代码l节。还望大家敬请原谅。写的很_浅Q希望有反汇~经验的前辈不吝指教Q在此,先谢q啦。哈?^_^


]]>
þþþþϸApp| 91޹˾þþƷ| ŷպƷþ| þþþAVרJN| ĻþþƷ| þҹ³˿Ƭ| þ˾Ʒԭ| þĻר| Ļþҹ| þùƷ-þþƷ| ۺѾƷþþ| þøŮ߳MBA| 91Ƶ91þþ| ĻӰӾþþѹۿ| ھƷþþþӰԺ| þѹƷ| ƷŮͬþþþõӰԺ | ȾþֻоƷ| ٸִִˬëƬþú | þþƷһ| ˾þô߽ۺ5g| ھƷ˾þþþ| ŷպþAV| ƷþóӰԺ| ŷպƷþþþ| Ʒþþþþ | պþ| þ97þ97Ʒӿ| AVþþƷݺݰ˳ | ԭۺϾþ| þþƷ | þþAVҰ| ޳˾þ| ݺݺݾþ| AVҰ¾þ| ޾Ʒҹvaþ| Ʒþþþþþþþ| þˮav뾫Ʒ鶹| þøŮ߳MBA| ɫƾþþþþþۺ| þ99þóѲ|