注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

简洁即美

最简洁的手法保存记忆

 
 
 

日志

 
 

【转载】W32Dasm反汇编工具使用教程[转载]  

2013-07-31 19:34:27|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


W32Dasm是一个强大的反汇编工具,操作简单,使用方便。通常被程序员使用,当然也可被用来Crack软件了,很适合Cracker使用。我在这把与crack相关的功能简述如下:

1.0 开始
2.0 保存反汇编文本文件和创建方案文件
3.0 反汇编文本代码的基本操作
4.0 复制汇编代码文本
5.0 装载32位的汇编代码动态调试
6.0 运行,暂停或终止程序
7.0 单步跟踪程序
8.0 设置激活断点
9.0 偏移地址和虚拟地址转换

1.0 开始

1.1 运行W32Dasm,在这里以windows95自带的计算器为例:calc.exe。

1.2 从Disassembler(反汇编)菜单选择Disassembler Options(反汇编程序选项)选项将出现如下对话框:
[img]http://www.pediy.com/tutorial/chap4/Image/lesson81101.gif[/img]
1.3 在Disassembler(反汇编)菜单,选择Open File(打开文件)选项或按工具栏按钮

1.4 选择你要打开的文件就可。
注意:你反汇编文件后,如字符己超过屏幕外,这时你要选择合适的字体(在Font字体选项中Select Font选择字体) ,然后设为默认字体(Save Default Font)即可。 当然一般以默认值就可。

2.0 保存反汇编文本文件和创建方案文件(Save The Disassembly Text and Create A Project File )

略。

3.0 反汇编源代码的基本操作

3.1 转到代码开始(Goto Code Start)

在工具栏按或从菜单的转到(Goto)选项选择转到代码开始(Goto Code Start) 或按Ctrl S, 这样光标将来到代码的开始处,用户可通过双击鼠标或用shift+上下光标键改变光标的位置。

注:代码的开始处是反汇编代码列表清单汇编指令的开始,而不是代码运行的起点,程序运行的起点称为程序入口点(Program Entry Point)

3.2 转到程序入口点(Goto Program Entry Point)

在工具栏按或菜单的转到(Goto)选项选择 转到程序入口点(Goto Program Entry Point)或按F10,这样光标将来到程序入口点(Entry Point),这里就是程序执行的起始点,一般动态调试时LOAD时也就停在此处。

3.3 转到页(Goto Page)

在工具栏按或菜单的转到(Goto)选项选择转到页(Goto Page)或按F11,这时跳出一对话框,输入页数可跳转到相关页面去。
[img]http://www.pediy.com/tutorial/chap4/Image/lesson81106.gif[/img]
3.4 转到代码位置(Goto Code Location)

在工具栏按或菜单的转到(Goto)选项选择转到代码位置(Goto Code Location)或按F12,一个对话框将出现,充许用户输入代码偏移地址,以跳转到此位置上去。
[img]http://www.pediy.com/tutorial/chap4/Image/lesson81108.gif[/img]
3.5 执行文本跳转(Execute Text Jump)

这功能是在Execute Text(执行文本)菜单选项里的,执行跳跃(Execute Jump)功能激活条件是光标在代码的跳转指令这行上(这时光条是高亮度的绿颜色)。此时工具条Jump To按钮也激活。如图:

[img]http://www.pediy.com/tutorial/chap4/Image/lesson81110.gif[/img]
此时按或菜单选项Execute Jump(执行跳跃)或按右光标键,光条将来到跳转指令所指到的位置。在这例子里,将来到:004076CE xor eax,eax 这一行代码处:

[img]http://www.pediy.com/tutorial/chap4/Image/lesson81111.gif[/img]
如要返回到上一次跳跃,请参考3.6.

3.6 返回到上一次跳跃Return From Last Jump

这功能是在Execute Text(执行文本)菜单选项里的,此指令仅仅是在 执行文本跳转功能完成后才激活。当这条件成立时,按钮将激活。按或在菜单里选项返回到上一次跳跃(Return From Last Jump)或按左光标键,光条将返回到上一次跳跃位置处。

3.7 执行呼叫Execute Text Call


这功能是在Execute Text(执行文本)菜单选项里的,此功能激活的条件是光条在CALL指令一行。在这一行时光条将发绿,按钮将激活。执行时光条将会来到CALL所指的地址处。
如下图: 光条在0040751D call 004073D4 一行。

[img]http://www.pediy.com/tutorial/chap4/Image/lesson81114.gif[/img]
此时按或在菜单的执行呼叫(Execute Text Call)或按右光标键,光条将来到CALL所指的地址004073D4这一行。

[img]http://www.pediy.com/tutorial/chap4/Image/lesson81115.gif[/img]
如要返回到刚才起点的0040751D call 004073D4 一行,参考3.8的返回呼叫。

3.8 返回呼叫(Return From Last Call)

这功能是在Execute Text(执行文本)菜单选项里的,此指令仅仅是在执行呼叫Execute Text Call功能完成后才激活。当这条件成立时,按钮将激活。按或在菜单里选项返回呼叫(Return From Last Call)或按左光标键,光条将返回到上一次呼叫位置处。

3.9 导入功能(Imported)

在菜单功能选项里,其作用主要是查看import函数。按或在菜单功能选项里的导入(Imports)命令,执行后将列出当前文件的Import函数。

[img]http://www.pediy.com/tutorial/chap4/Image/lesson81118.gif[/img]
你可双击这些项目,光条将来到调用这些函数的代码处。
注意:如果代码多处引用了这些函数,你双击这个项目函数时,光条将在调用了其的几个位置代码处循环.
你也可用copy all或copy view复制import函数。

3.10 出口功能(Exported)

在菜单功能选项里,其作用主要是查看Export函数。按或在菜单功能选项里的出口(Exports)命令,执行后将列出当前文件的Exports函数。

注意:一般EXE文件没有exported,DLL文件有exported函数。

3.11 裁判(References)

在这个菜单选项里有菜单参考(MENU), 对话参考(DIALOG) or (串式数据参考STRING DATA),分别对应按钮:,或。

注意:其中(串式数据参考STRING DATA)功能破解时很常用。
4.0 复制汇编代码文本

W32dasm充许打印或复制指定行的汇编代码。首先你将鼠标移到W32DASM的最左边单击,将会出现一个小红点,再按住shift键,移到你需要的下一行,再单击鼠标一下,将选中一段,按CTRL+C复制或在菜单选项反汇编里的拷贝指定的行(Copy Lines of Text)功能或按,把数据复制到剪贴板里。如:

[img]http://www.pediy.com/tutorial/chap4/Image/lesson81124.gif[/img]
5.0 装载32位的汇编代码动态调试

5.1 反汇编windows自带的计算器程序 calc.exe.

5.2 选择菜单调试选项中的加载处理(Load Process),或按Ctrl+L.出现一个加载对话框,你可输入选项命令。现在你可按装载(load)按钮。

Calc.exe现在被W32DASM动态调试,将出现左右两个调试窗口(如下图),在初始化calc.exe程序后,指令将停留在入口点(Entry Point)处。

左边的调试窗口列出各种状态器如:CPU寄存器,CPU控制寄存器,断点,活动的DLL,段寄存器等等;

[img]http://www.pediy.com/tutorial/chap4/Image/lesson81125.gif[/img]
[img]http://www.pediy.com/tutorial/chap4/Image/lesson81126.gif[/img]
6.0 运行,暂停或终止程序

6.1 在右调试窗口,按运行(RUN)按钮或按F9,calc.exe将运行起来。

按暂停(PAUSE)按钮或空格键,程序将暂停,这在单步跟踪时经常用到。

按终止(TERMINAT)按钮,程序将停止,退出动态调试环境。

7.0单步跟踪程序

7.1 重新加载 calc.exe

7.2 在程序加载后,停留在入口点,你可按F7或F8单步调试程序,这两个键所不同的是F7是跟进CALL里,F8是路过。

7.3 进入自动调试按 (F5) 和结束自动调试按 (F6) 。

8.0设置激活断点

8.1 重新加载 calc.exe

8.2 在W32DASM的菜单转到选项转到代码处(goto code)功能,填上403198,按确定,你将在W32Dasm的主窗口(此时可能最小化了,把其还原即可)来到403198地址一行。光条在这一行显亮绿色,按F2或用鼠标左点击最左边(同时按住CTRL)设置断点。

这时如断点设置成功,光条最左边有一小段黄条,显示此行为断点。如下图:
[img]http://www.pediy.com/tutorial/chap4/Image/lesson81127.gif[/img]
如果断点不在这里,整行光条将是黄色的。

当断点设置好后,在左调试窗口中的断点小窗口显示断点情况(右边有一*):

[img]http://www.pediy.com/tutorial/chap4/Image/lesson81128.gif[/img]
此时按F2或(鼠标左键+CTRL),断点将取消。

8.3 此时按F9程序将运行到相关断点时停止。

9.0 偏移地址和虚拟地址转换

W32DASM、SOFTICE和Hiew(Decode模式)显示的地址都是虚拟地址,但是在Hiew(Decode模式)下,F5功能键查找的地址是偏移地址,因此必须将虚拟地址转换成偏移地址,才能找到正确的地址。常用的方法是在W32DASM下将绿色的光条移到某一行代码上 , 在窗口底部有一行字指示其偏移地址 , 如虚似地址:Code DaTa@0040534e而偏移地址为:@Offset 0000474Eh. 这就是偏移地址。
  评论这张
 
阅读(86)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017