📄 lesson811.htm
字号:
Point),这里就是程序执行的起始点,一般动态调试时LOAD时也就停在此处。</p>
<p class="p9" align="left">3.3 <b>转到页(Goto Page)</b></p>
<p class="p9" align="left">在工具栏按<img src="lesson81105.gif" tppabs="http://toye.dihou.org/img/lesson81105.gif" width="25" height="24">或菜单的<b>转到(Goto)</b>选项选择<b><i>转到页(Goto
Page)</i>或</b>按<b>F11</b>,这时跳出一对话框,输入页数可跳转到相关页面去。</p>
<p class="p9" align="left"><img src="lesson81106.gif" tppabs="http://toye.dihou.org/img/lesson81106.gif" width="152" height="182"></p>
<p class="p9" align="left">3.4 <b>转到代码位置(Goto Code Location)</b></p>
<p class="p9" align="left">在工具栏按<img src="lesson81107.gif" tppabs="http://toye.dihou.org/img/lesson81107.gif" width="26" height="26">或菜单的<b>转到(Goto)</b>选项选择<b><i>转到代码位置(Goto
Code Location</i>)或</b>按<b>F12</b>,一个对话框将出现,充许用户输入代码偏移地址,以跳转到此位置上去。</p>
<p class="p9" align="left"><img src="lesson81108.gif" tppabs="http://toye.dihou.org/img/lesson81108.gif" width="340" height="255"></p>
<p class="p9" align="left">3.5 <b>执行文本跳转(Execute Text Jump)</b></p>
<p class="p9" align="left">这功能是在<b>Execute Text(执行文本)</b>菜单选项里的,<i><b>执行跳跃(Execute
Jump)</b></i>功能激活条件是光标在代码的跳转指令这行上(这时光条是高亮度的绿颜色)。此时工具条<i><b>Jump To</b></i>按钮<img src="lesson81109.gif" tppabs="http://toye.dihou.org/img/lesson81109.gif" width="26" height="23">也激活。如图:</p>
<p class="p9" align="left"><img src="lesson81110.gif" tppabs="http://toye.dihou.org/img/lesson81110.gif" width="535" height="304"></p>
<p class="p9" align="left">此时按<img src="lesson81109.gif" tppabs="http://toye.dihou.org/img/lesson81109.gif" width="26" height="23">或菜单选项<b><i>Execute
Jump(执行跳跃)</i></b>或按<b><i>右光标键</i></b>,光条将来到跳转指令所指到的位置。在这例子里,将来到:004076CE xor
eax,eax 这一行代码处:</p>
<p class="p9" align="left"><img src="lesson81111.gif" tppabs="http://toye.dihou.org/img/lesson81111.gif" width="536" height="307"></p>
<p class="p9" align="left">如要返回到上一次跳跃,请参考3.6.</p>
<p class="p9" align="left">3.6 <b>返回到上一次跳跃Return From Last Jump</b></p>
<p class="p9" align="left">这功能是在<b>Execute Text(执行文本)</b>菜单选项里的,此指令仅仅是在 <b><i>执行文本跳转</i></b>功能完成后才激活。当这条件成立时,按钮<img src="lesson81112.gif" tppabs="http://toye.dihou.org/img/lesson81112.gif" width="24" height="23">将激活。按<img src="lesson81112.gif" tppabs="http://toye.dihou.org/img/lesson81112.gif" width="24" height="23">或在菜单里选项<b><i>返回到上一次跳跃(Return
From Last Jump</i></b><i><b>)</b></i>或按<b><i>左光标键</i></b>,光条将返回到上一次跳跃位置处。</p>
<p class="p9" align="left">3.7 <b>执行呼叫Execute Text Call</b><br>
</p>
<p class="p9" align="left">这功能是在<b>Execute Text(执行文本)</b>菜单选项里的,此功能激活的条件是光条在CALL指令一行。在这一行时光条将发绿,按钮<img src="lesson81113.gif" tppabs="http://toye.dihou.org/img/lesson81113.gif" width="23" height="24">将激活。执行时光条将会来到CALL所指的地址处。<br>
如下图: 光条在0040751D call 004073D4 一行。</p>
<p class="p9" align="left"><img src="lesson81114.gif" tppabs="http://toye.dihou.org/img/lesson81114.gif" width="536" height="305"></p>
<p class="p9" align="left">此时按<img src="lesson81113.gif" tppabs="http://toye.dihou.org/img/lesson81113.gif" width="23" height="24">或在菜单的<b><i>执行呼叫(Execute
Text Call)</i></b>或按<b><i>右光标键</i></b>,光条将来到CALL所指的地址004073D4这一行。</p>
<p class="p9" align="left"><img src="lesson81115.gif" tppabs="http://toye.dihou.org/img/lesson81115.gif" width="534" height="306"></p>
<p class="p9" align="left">如要返回到刚才起点的0040751D call 004073D4 一行,参考3.8的<b><i>返回呼叫</i></b>。</p>
<p class="p9" align="left">3.8 <b>返回呼叫(Return From Last Call)</b></p>
<p class="p9" align="left">这功能是在<b>Execute Text(执行文本)</b>菜单选项里的,此指令仅仅是在<b><i>执行呼叫Execute
Text Call</i></b>功能完成后才激活。当这条件成立时,按钮<img src="lesson81116.gif" tppabs="http://toye.dihou.org/img/lesson81116.gif" width="25" height="24">将激活。按<img src="lesson81116.gif" tppabs="http://toye.dihou.org/img/lesson81116.gif" width="25" height="24">或在菜单里选项<b>返回呼叫(Return
From Last Call)</b>或按<b><i>左光标键</i></b>,光条将返回到上一次呼叫位置处。</p>
<p class="p9" align="left">3.9 <b>导入功能(Imported)</b></p>
<p class="p9" align="left">在菜单<b>功能</b>选项里,其作用主要是查看import函数。按<img src="lesson81117.gif" tppabs="http://toye.dihou.org/img/lesson81117.gif" width="25" height="24">或在菜单<b>功能</b>选项里的<b><i>导入(Imports)</i></b>命令,执行后将列出当前文件的Import函数。</p>
<p class="p9" align="left"><img src="lesson81118.gif" tppabs="http://toye.dihou.org/img/lesson81118.gif" width="511" height="324"></p>
<p class="p9" align="left">你可双击这些项目,光条将来到调用这些函数的代码处。<br>
注意:如果代码多处引用了这些函数,你双击这个项目函数时,光条将在调用了其的几个位置代码处循环.<br>
你也可用copy all或copy view复制import函数。</p>
<p class="p9" align="left">3.10 <b>出口功能(Exported)</b></p>
<p class="p9" align="left">在菜单<b>功能</b>选项里,其作用主要是查看Export函数。按<img src="lesson81119.gif" tppabs="http://toye.dihou.org/img/lesson81119.gif" width="21" height="21">或在菜单<b>功能</b>选项里的<b><i>出口(Exports)</i></b>命令,执行后将列出当前文件的Exports函数。</p>
<p class="p9" align="left">注意:一般EXE文件没有exported,DLL文件有exported函数。</p>
<p class="p9" align="left">3.11 <b>裁判(References)</b></p>
<p class="p9" align="left">在这个菜单选项里有<b>菜单参考(MENU)</b>, <b>对话参考(DIALOG)</b> or
<b>(串式数据参考STRING DATA)</b>,分别对应按钮:<img src="lesson81120.gif" tppabs="http://toye.dihou.org/img/lesson81120.gif" width="24" height="23">,<img src="lesson81121.gif" tppabs="http://toye.dihou.org/img/lesson81121.gif" width="25" height="25">或<img src="lesson81122.gif" tppabs="http://toye.dihou.org/img/lesson81122.gif" width="23" height="24">。</p>
<p class="p9" align="left">注意:其中<b>(串式数据参考STRING DATA)</b>功能破解时很常用。</p>
<p class="p9" align="left"><a name="4"></a>4.0 复制汇编代码文本</p>
<p class="p9" align="left"> W32dasm充许打印或复制指定行的汇编代码。首先你将鼠标移到W32DASM的最左边单击,将会出现一个小红点,再按住shift键,移到你需要的下一行,再单击鼠标一下,将选中一段,按CTRL+C复制或在菜单选项<b>反汇编</b>里的<b><i>拷贝指定的行(Copy
Lines of Text)</i></b>功能或按<img src="lesson81123.gif" tppabs="http://toye.dihou.org/img/lesson81123.gif" width="25" height="23">,把数据复制到剪贴板里。如:</p>
<p class="p9" align="left"><img src="lesson81124.gif" tppabs="http://toye.dihou.org/img/lesson81124.gif" width="536" height="307"></p>
<p class="p9" align="left"><a name="5"></a>5.0 装载32位的汇编代码动态调试</p>
<p class="p9" align="left">5.1 反汇编windows自带的计算器程序 calc.exe.</p>
<p class="p9" align="left">5.2 选择菜单<b>调试</b>选项中的<i><b>加载处理(Load Process)</b></i>,或按<b><i>Ctrl+L</i></b>.出现一个加载对话框,你可输入选项命令。现在你可按<i><b>装载(load)</b></i>按钮。</p>
<p class="p9" align="left">Calc.exe现在被W32DASM动态调试,将出现左右两个调试窗口(如下图),在初始化calc.exe程序后,指令将停留在入口点(Entry
Point)处。</p>
<p class="p9" align="left">左边的调试窗口列出各种状态器如:CPU寄存器,CPU控制寄存器,断点,活动的DLL,段寄存器等等;</p>
<p class="p9" align="left"><img src="lesson81125.gif" tppabs="http://toye.dihou.org/img/lesson81125.gif" width="536" height="414" align="middle">(左调试窗口)</p>
<p class="p9" align="left"><img src="lesson81126.gif" tppabs="http://toye.dihou.org/img/lesson81126.gif" width="396" height="357" align="middle">(右调试窗口)</p>
<p class="p9" align="left"><a name="6"></a>6.0 运行,暂停或终止程序</p>
<p class="p9" align="left">6.1 在右调试窗口,按<b><i>运行(RUN)</i></b>按钮或按<b><i>F9,</i></b>calc.exe将运行起来。</p>
<p class="p9" align="left"> 按<i><b>暂停(PAUSE)</b></i>按钮或<b><i>空格键</i></b>,程序将暂停,这在单步跟踪时经常用到。</p>
<p class="p9" align="left"> 按<i><b>终止(TERMINAT)</b></i>按钮,程序将停止,退出动态调试环境。</p>
<p class="p9" align="left"><a name="7"></a>7.0单步跟踪程序</p>
<p class="p9" align="left">7.1 重新加载 calc.exe</p>
<p class="p9" align="left">7.2 在程序加载后,停留在入口点,你可按<i><b>F7</b></i>或<b><i>F8</i></b>单步调试程序,这两个键所不同的是F7是跟进CALL里,F8是路过。</p>
<p class="p9" align="left">7.3 进入自动调试按 (<i><b>F5</b></i>) 和结束自动调试按 (<i><b>F6</b></i>)
。</p>
<p class="p9" align="left"><a name="8"></a>8.0设置激活断点</p>
<p class="p9" align="left">8.1 重新加载 calc.exe</p>
<p class="p9" align="left">8.2 在W32DASM的菜单<b>转到</b>选项<i><b>转到代码处(goto code)</b></i>功能,填上403198,按确定,你将在W32Dasm的主窗口(此时可能最小化了,把其还原即可)来到403198地址一行。光条在这一行显亮绿色,按<b><i>F2</i></b>或用<b><i>鼠标左点击最左边(同时按住CTRL)</i></b>设置断点。</p>
<p class="p9" align="left">这时如断点设置成功,光条最左边有一小段黄条,显示此行为断点。如下图:</p>
<p class="p9" align="left"><img src="lesson81127.gif" tppabs="http://toye.dihou.org/img/lesson81127.gif" width="536" height="306"></p>
<p class="p9" align="left">如果断点不在这里,整行光条将是黄色的。</p>
<p class="p9" align="left">当断点设置好后,在左调试窗口中的断点小窗口显示断点情况(右边有一*):</p>
<p class="p9" align="left"><img src="lesson81128.gif" tppabs="http://toye.dihou.org/img/lesson81128.gif" width="124" height="111"></p>
<p class="p9" align="left">此时按<b><i>F2</i></b>或(<b><i>鼠标左键+CTRL</i></b>),断点将取消。</p>
<p class="p9" align="left">8.3 此时按<b><i>F9</i></b>程序将运行到相关断点时停止。</p>
<p class="p9" align="left"><a name="9"></a>9.0 偏移地址和虚拟地址转换</p>
<p class="p9" align="left">W32DASM、SOFTICE和Hiew(Decode模式)显示的地址都是虚拟地址,但是在Hiew(Decode模式)下,F5功能键查找的地址是偏移地址,因此必须将虚拟地址转换成偏移地址,才能找到正确的地址。常用的方法是在W32DASM下将绿色的光条移到某一行代码上
, 在窗口底部有一行字指示其偏移地址 , 如虚似地址:Code DaTa@0040534e而偏移地址为:@Offset 0000474Eh. 这就是偏移地址。
</p>
<p class="p9" align="left"><img src="lesson81129.gif" tppabs="http://toye.dihou.org/img/lesson81129.gif" width="535" height="306">
</p>
<p class="p9" align="left">10.0 结束</p>
<p class="p9" align="left">(要了解更多的内容参考W32DASM的帮助文件)</p>
<p class="p9" align="right">看雪 2000/10/1</p>
<div align="right"></div>
<table width="80%" border="1" cellspacing="0" cellpadding="0" align="center" bgcolor="#99CCFF" bordercolorlight="#99CCFF" bordercolordark="#99CCFF">
<tr>
<td width="82%" class="p8" height="34">Copyright @看雪 2000 All rights reserved
<a href="mailto:toye@126.com">与我联系</a></td>
<td width="10%" class="p9" height="34"><a href="index.htm" tppabs="http://toye.dihou.org/index.htm">返回<br>
首页</a></td>
<td width="8%" class="p8" height="34"><a href="molu.htm" tppabs="http://toye.dihou.org/molu.htm" class="p9">返回<br>
目录</a></td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -