⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap3-2.htm.primary

📁 加密与解密,软件加密保护技术与解决方案,看雪文档!
💻 PRIMARY
📖 第 1 页 / 共 2 页
字号:
<html>
<head>
<title>Crack Tutorial</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="style/css.css" type="text/css">
<link rel="stylesheet" href="../STYLE/Css.css" type="text/css">
</head>

<body bgcolor="white" text="#000000" link="#004080" vlink="#004080" background="../image/Back.gif">
<p><a href="catalog.htm">目录</a>>>第3章</p>
<p align="center" class="shadow1Copy"><b class="p3">第3章 动态分析技术</b></p>
<table width="80%" border="0" cellspacing="0" cellpadding="3" align="center" bgcolor="#bcbcbc" bordercolor="#111111" class="shadow1">
  <tr> 
    <td class="shadow1" width="25%"> 
      <div align="center"><span class="p9">第一节<font color="#FFFFFF"> </font><a href="Chap3-1.htm"><font color="#FFFFFF"> 
        安装与配制 </font></a></span></div>
    </td>
    <td class="shadow1" width="25%"> 
      <div align="center"><span class="p9">第二节<font color="#FFFFFF"> <font color="#000000"><a href="Chap3-2.htm"><font color="#FFFFFF">操作入门</font></a></font></font></span></div>
    </td>
    <td class="shadow1" width="25%"> 
      <div align="center"><span class="p9">第三节 <a href="Chap3-3.htm"><font color="#FFFFFF">API函数简介</font></a></span></div>
    </td>
    <td class="shadow1" width="25%"> 
      <div align="center"><span class="p9">第四节 <a href="Chap3-4.htm"><font color="#FFFFFF">拆解教程</font></a> 
        </span></div>
    </td>
  </tr>
</table>
<p align="center">  <b>第二节 SoftICE与TRW2000操作入门</b></p>
<p>  由于TRW2000命令和操作完全兼容SoftICE,因此如不特殊说明,在本文对SoftICE的叙说都适合TRW2000。<br>
    SoftICE的所有操作都发生在一个可以随时可激活的调试窗口中,在这个窗口中可以监视Windows应用程序和系统的运行。<br>
  <b>一、 调试窗口简介</b><br>
    我们假设你的SoftICE己经正常运行,此时在Windows里按&quot;Ctrl+D&quot;键就可以呼出SoftICE的调试窗口,当需要返回到Windows系统时,再按&quot;Ctrl+D&quot;键,也可使用X命令或按F5键。激活的调试窗口如图2.14所示,分为寄存器窗口、数据窗口、代码窗口、浮点窗口和命令窗口等部分。<br>
  如是在TRW2000环境下,激活是按&quot;CTRL+N&quot;,和SoftICE不同的是TRW2000中没有浮点窗口,不过有一个堆栈窗口。</p>
<div align="center">
  <p><img src="Image/les511.gif" width="640" height="559"></p>
  <p>(图一)SoftICE或TRW2000调试截图</p>
</div>
<p>1、寄存器窗口<br>
    在这里可以观察到各种寄存器的当前值,如数据寄存器EAX、EBX、ECX、EDX和控制寄存器(EIP和PSW)等,有一点要注意了,由于我们是在Windows平台下,所以看到的都是80386寄存器集,其与16位寄存器差别在前多了一字符&quot;E&quot;,意为16位寄存器扩展。<br>
  2、数据窗口<br>
    在数据窗口显示指定内存处中的数据,以十六进制和ASCII同时显示,这可以说是我们的眼睛,因此有必要了解一下各部分的含义。</p>
<p align="center"><img src="Image/chap301.gif" width="486" height="62"></p>
<p align="center">(图二)</p>
<p align="left">①号位置的0030:这是段选择器。<br>
    在Windows的保护模式下CS、DS、ES、SS、FS和GS不叫段寄存器,叫段选择器。在保护模式中,内存分为了好多的段,在TRW200下用GDT就可以看到段的编号、类型、开始物理地址、大小、属性。让我们看看编号0030是什么东西:</p>
<div align="center"> 
  <p><img src="Image/chap302.gif" width="568" height="49"></p>
  <p>(图三)</p>
  <div align="center"> 
    <p align="left">  这个段是32位数据类型,长度为4G ,我们还可以看到很多的段,它们有可能会指向同一个物理地址,但它们的类型,属性可能不同。如一些段指向的地址是不可读写的,但另外一个段指向的同一物理地址是可读写的!如果我们通过不可写的那段的编号放到段选择器,然后进行读写操作,肯定死掉了。 
      但换了另外一个段对同一个地方读写那就没问题!保护模式的内存管理挺有趣的,感兴趣的不妨看看这方面的书,当然作为初学者只需稍微了解就可。<br>
      ②号位置00000000:此处表示内存的虚拟地址。<br>
      ③号位置的值是当前内存的数据,以十六进制表示。<br>
      ④号位置的值是&quot;③&quot;处值的另一种表示方法:ASCII码。<br>
      3、代码窗口<br>
        此处显示的是当前程序的代码,因为不管是什么程序,最终在CPU执行时都是以机器语言方式,而汇编语言和机器语言是一一对应的,因此SoftICE为了方便我们理解,把所监视的代码以汇编代码形式显示在我们面前。例如:</p>
    <div align="center"> 
      <p><img src="Image/chap303.gif" width="527" height="60"></p>
      <p>(图四)<br>
      </p>
      <div align="center"> 
        <div align="center"> 
          <div align="center"> 
            <p align="left"> ①段选择器;<br>
              ②虚拟地址;<br>
              ③机器码:这就是CPU执行的机器代码,此处是以十六进制表示。你可用Code on/off打开或关闭这项的显示。<br>
              ④汇编指令:和机器码对应的程序代码。<br>
              4、堆栈窗口<br>
                这个是TRW2000特有的,通过它很方便监视堆栈的状况。<br>
              5、命令窗口<br>
                这是各种命令执行的地方,在屏幕底部的动作状态行显示执行命令的各种提示,以及可提供指令语法帮助。<br>
              6、程序领空<br>
                所谓领空,实际上是指:在某一时刻,CPU 的 CS:IP(EIP) 所指向的某一段代码的所有者所在的区域。此例中SoftICE所停下来时光标所指的那一句代码是属于KERNEL32.DLL的,因此就叫KERNEL32.DLL领空,在图2.14中,可看到的领空名是KERNEL32!.text,那我怎么知道它就是KERNEL32.DLL文件呢?这个主要是经验,KERNEL32.DLL是Windows系统文件,在SoftICE里显示领空名时不显示扩展名,只是显示前一部份。</p>
            <p align="left"><b>二、SoftICE常用命令简介</b></p>
            <div align="center">
              <div align="center">
                <div align="center">
                  <p align="left">由于SoftICE命令操作较多,在此就把几个常用的命令介绍一下,其它详细说明请参考附录的&quot;SoftICE手册&quot;。<br>
                    1、 G命令<br>
                    语法:G [=start-address] [break-address]<br>
                    作用:执行程序,后面如果加地址,则执行到该地址为止。<br>
                    注意: TRW2000 中G命令与SoftICE稍有不同,SoftICE中G命令必须是在当前段中,这时IP(EIP)为指定值才中断;而TRW2000则不管段址如何,只要IP(EIP)是指定的值便停下,TRW2000这个特性大大方便我们的操作。<br>
                    2、P命令<br>
                    语法: P [ret]<br>
                    作用:单步执行程序。<br>
                    只执行P时,相当于按下F10键。在汇编模式中,当遇到 CALL、INT、LOOP、REP指令时,P将不跟踪进去,直到这些指令执行完毕,控制才返回SoftICE,换句话说,P命令是&quot;跨&quot;过这些指令的。<br>
                    P RET 命令相当于快捷键 F12。SoftICE将一直单步执行直到它找到一条返回语句(RET、RETF),也就是说让SoftICE一直执行代码,直到出现 
                    RET (XXXX) 命令,再跳出来拦截,这时,当前 IP(EIP) 会是停在 RET (XXXX) 后的某一条语句上,通常是在某一个CALL 
                    XXXXXXXX 后面。由于我们通常用SoftICE在某些底层的Windows函数上设置断点,所以 F12 是很管用的。因为程序的作者用的是高级语言,Windows又是提倡&quot;透明&quot;,不希望程序员知道底层的操作,而只提供给他们高层的接口,而相当多的高级函数调用某个一定的底层函数,所以当你在底层函数上下断点,再用F12,就可以知道他用的是什么函数了。<br>
                    3、T命令<br>
                    语法:T [=start-address] [count] <br>
                    start-address:执行起始地址;<br>
                    count:指定SoftICE将单步跟踪多少次才停止。<br>
                    作用:单步跟踪。<br>
                    T命令相当于功能键F8,如没指定起始地址,将从CS:IP(EIP)指向的指令开始执行,此时当遇到 CALL、LOOP等指令时,T将跟踪进去。<br>
                    注意: F8和F10功能键的主要差别就在这,遇到 CALL、LOOP等指令时,F10是路过,而F8是跟进去。<br>
                    4、BPX命令<br>
                    语法:BPX [address] [IF expression] [DO &quot;command1;command2;...&quot;] 
                    <br>
                    address :断点所在的线性地址;<br>
                    IF expression:条件表达式,只有条件为&quot;真&quot;时,SoftICE才在断点处弹出;<br>
                    Do command:当SoftICE弹出时,自动执行的一些命令。<br>
                    作用:在可执行语句上设置(或清除)断点。<br>
                    BPX 用来在指令处下断点,程序一旦执行到此,SoftICE就会弹出。当光标在代码窗口中时,直接打入BPX就会在光标所在语句处设断点,再打BPX 
                    就取消。BPX的快捷键是 F9,当光标在代码窗口中时,按F9就是设定(取消)。<br>
                    BPX 也可用函数名来作地址参数:格式为&quot;BPX 函数名&quot;。<br>
                    这个函数名可以是任意一个API函数、虚拟机指令、DLL文件的引出函数等等,功能强劲。例:<br>
                    :bpx messageboxa(不用区分大小写)//只要程序调用了此函数,SoftICE将中断;<br>
                    :bpx GetWindowTexta if EAX==8 // 当调用GetWindowTexta函数时EAX=8,SoftICE将中断;<br>
                    :BPX GetWindowTexta do &quot;d EAX&quot;// 当 GetWindowTexta被中断,自动显示EAX的值。 
                    <br>
                    注意: TRW2000与SoftICE条件格式有点不同,如在SoftICE下的是:bpx loadlibrarya 
                    do &quot;dd esp-&gt;4&quot;,而相同的用法在TRW2000中是:bpx loadlibrarya 
                    do &quot;dd *(esp+4)&quot; 。另外SoftICE中用鼠标双击指令行可设断,而TRW2000中不行,只能按F9.<br>
                    5、BPM命令<br>
                    语法:BPM[size] address [条件表达式] DO[执行的命令]<br>
                    size:内存单元大小,B为字节(默认);W 为字;D 为双字;<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -