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

📄 lesson5032.htm

📁 为所有对破解感兴趣的朋友准备的礼物。希望大家能够喜欢。
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>
<head>
<title>看雪学苑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
.p8 {  font-size: 8pt}
.p9 {  font-size: 9pt}
a:hover {  color: #00FF00}
a {  text-decoration: none}
.p12 {  font-size: 12pt; font-weight: bold; color: #FF3333}
-->
</style>
</head>

<body bgcolor="#FFFFFF" vlink="#000000">
<table width="80%" border="1" cellspacing="0" cellpadding="0" align="center" bgcolor="#99CCFF" bordercolorlight="#99CCFF" bordercolordark="#99CCFF">
  <tr> 
    <td width="72%" class="p9"><a href="javascript:if(confirm('http://toye.yeah.net/  \n\n这个文件不能通过 Teleport Pro 取回, 因为 它被访问于一个域或在它的起始地址边界外部的路径上.  \n\n你想从服务器打开它吗?'))window.location='http://toye.yeah.net/'" tppabs="http://toye.yeah.net/">看雪教学</a></td>
    <td width="10%" class="p9">&nbsp; </td>
    <td width="10%"><a href="index.htm" tppabs="http://toye.dihou.org/index.htm" class="p9">返回<br>
      首页 <br>
      </a></td>
    <td width="8%"><a href="molu.htm" tppabs="http://toye.dihou.org/molu.htm" class="p9">返回<br>
      目录 </a></td>
  </tr>
</table>
<table width="80%" cellspacing="0" cellpadding="0" align="center" bordercolorlight="#99CCFF" bordercolordark="#99CCFF">
  <tr bgcolor="#E1F1F1"> 
    <td> 
      <table width="100%" cellspacing="0" cellpadding="0">
        <tr bgcolor="#FFFF33"> 
          <td> 
            <div align="center" class="p12">第五课 动态跟踪分析入门</div>
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
</table>
<table width="80%" cellspacing="0" align="center">
  <tr class="p9"> 
    <td width="24%" bgcolor="#CCFFFF"> 
      <div align="center"><font color="#000000"><a href="lesson5.htm" tppabs="http://toye.dihou.org/lesson5.htm">SOFTICE与TRW安装</a></font></div>
    </td>
    <td width="27%" bgcolor="#CCFFFF"> 
      <div align="center"><font color="#CCCCFF"><font color="#000000"><a href="lesson501.htm" tppabs="http://toye.dihou.org/lesson501.htm">基本操作和概念</a></font></font></div>
    </td>
    <td width="24%" bgcolor="#FFFFFF"> 
      <div align="center"><font color="#FF3333">拆解教程 </font></div>
    </td>
    <td width="25%" bgcolor="#CCFFFF"> 
      <div align="center"><a href="lesson504.htm" tppabs="http://toye.dihou.org/lesson504.htm">习题</a></div>
    </td>
  </tr>
</table>
<p align="center" class="p9">【<font color="#000000"><a href="lesson503.htm" tppabs="http://toye.dihou.org/lesson503.htm">破解教程一</a></font>】    
  【<font color="#FF3333">破解教程二</font>】</p>
<p><span class="p9">在此十分感谢<a href="javascript:if(confirm('http://breakice.yeah.net/  \n\n这个文件不能通过 Teleport Pro 取回, 因为 它被访问于一个域或在它的起始地址边界外部的路径上.  \n\n你想从服务器打开它吗?'))window.location='http://breakice.yeah.net/'" tppabs="http://breakice.yeah.net/" target="_blank"><font color="#0000FF">冰毒</font></a>推荐这篇文章给大家。</span><span class="p9"><br>
  </span></p>
<pre><span class="p9">========================================================================
ED!SON's Windows 95 拆解教程 V1.00           (中文翻译: JIM TYAN)
========================================================================
<br>附:<a href="javascript:if(confirm('http://toye.dihou.org/examples.zip  \n\n这个文件不能通过 Teleport Pro 取回, 因为 没有遇到方案的文件类型说明.  \n\n你想从服务器打开它吗?'))window.location='http://toye.dihou.org/examples.zip'" tppabs="http://toye.dihou.org/examples.zip">ED!SON教程的示范程序下载</a> </span></pre>
<pre><span class="p9">目录
========
1.  Windows 拆解简介
2.  SoftICE for windows 2.00 快速入门
3.  如何找注册码
    3.1  Task Lock 3.00 - 一个简单的、仅有注册号保护的拆解例子
    3.2  Command Line 95 - 容易的“用户名/注册号"注册方式的拆解 
4.  为Command Line 95制作注册器 
5.  当程序调用一个函数时,PUSH和CALL这些指令是如何工作的 
6.  关于VB程序</span></pre>
<pre><span class="p9">附录
========
A.  如何让SOFTICE载入符号
B.  函数的语法
C.  到哪里获取软件
D.  如何与我联系</span></pre>
<pre><span class="p9">1. WINDOWS拆解简介
===================================
拆解一个WINDOWS程序要比拆解一个在DOS下运行的程序要容易得多。因为在WINDOWS
中,只要WINDOWS的函数被使用了,想对任何真正要寻找蛛丝马迹的人隐藏什么东西
是比较困难的。</span></pre>
<pre><span class="p9">你需要的第一个(常常也是唯一的一个)工具就是SoftICE/Win 2.oo, 它是NuMega
出品的一个非常强大的调试工具。有些人发现它很难用,但我会教你如何使用它进行
有效的调试,也希望你们能够明白我将要告诉你们的:-)。 你应该看看在附录A 中有
关SoftICE/Win 2.oo的一些资料。我在安装SoftICE中从来没有碰到任何问题, 如果
你碰到了,我只好让你查它的参考手册了。</span></pre>
<pre><span class="p9">你所需要的所有软件的URL列在附录C中</span></pre>
<pre><span class="p9">- ED!SON, edison@ccnux.utm.my
</span></pre>
<pre><span class="p9">2. SOFTICE/WIN 2.OO 快速入门
=========================================
首先你应该对SOFTICE的屏幕有个大概的了解
</span></pre>
<pre><span class="p9">|--------------------|
|     寄存器窗       |  用 'R' 编辑
|--------------------|
|     数据窗         |  用 'D' 列出某个地址的数据, 用 'E' 编辑
|--------------------| 
|     代码窗         |  用 'U' 反汇编, 'A' 加入汇编代码
|--------------------| 
|     命令窗         |  在这里输入命令和读出结果
|--------------------|</span></pre>
<pre><span class="p9">其它重要的功能键(在缺省的键定义下)
'H'/F1   - 在线帮助
F5/Ctr+D - 运行
F8       - 单步执行,切入子程序和中断
F10      - 单步执行,跳过子程序和中断
F11      - 跳出子程序,回到CALL的下一条指令</span></pre>
<pre><span class="p9">3. 如何寻找注册码
=============================
最容易的练习莫过于找个共享软件来试试把它注册。</span></pre>
<pre><span class="p9">3.1 Task Lock 3.00 - 一个简单的、仅有注册号保护的拆解例子
=================================================================
这是一个简单的保护,只有一个而且不会变化的注册码。</span></pre>
<pre><span class="p9">3.1.1 检查程序
===========================
它是16 bit程序,还是32 bit的? 在哪里输入注册信息? 在它的帮助里有没有
发现关于注册的一些线索?在你继续往下读之前,去把它们找一找!</span></pre>
<pre><span class="p9">....你现在应该在找吧!.....你是在找吗?.....你找到了吗?.......
好,你现在知道了,它是一个32位的WINDOWS 95应用程序,你可以在一个选择了
“Register|Register..."菜单就会弹出来的对话框中,输入一个注册码来注册
程序。通过阅读它的帮助,你也知道可以有两种注册方式:Individual和Site
License。所以这里对合法的注册码就可能有两次核对。</span></pre>
<pre><span class="p9">3.1.2 捕捉注册代码
===========================
注册码通常在普通的WINDOWS文字框中输入。为了检查输入的注册码, 程序必须
采用下面这些函数中的一个来把文字框中的内容读出来。</span></pre>
<pre><span class="p9">        16-bit                      32-bit
        ------                      ------
        GetWindowText               GetWindowTextA, GetWindowTextW
        GetDlgItemText              GetDlgItemTextA, GetDlgItemTextW</span></pre>
<pre><span class="p9">32-BIT函数的最后一个字母告诉我们函数是使用单字节还是双字节字符串。双字
节的注册码是很少见的。</span></pre>
<pre><span class="p9">也许你已经体会到我的意思了...“如果我能在GetWindowText时中断...", 你
的确能这样做!但是你首先必须确认这些符号已经由SOFTICE载入了(详见附录A)</span></pre>
<pre><span class="p9">在SoftICE中设定一个“陷阱"(实际上我们叫断点),你得先按Ctrl+D进入调
试状态,然后用命令BPX,后面跟著是函数的名字或者内存地址。因为Task Lock
是32位程序,所以我们在GetWindowTextA处设一个断点。 如果这个不行, 我们
可以再试其它的。</span></pre>
<pre><span class="p9">象这样在SoftICE中输入:</span></pre>
<pre><span class="p9">        :bpx getwindowtexta</span></pre>
<pre><span class="p9">如果你得到“No LDT"这样的错误信息,就要注意不要运行其它程序。我已经注
意到Norton Commander/Dos 会干扰这个功能。 你可以列出所有断点来检查一下
是否设好断点:
        :bl</span></pre>
<pre><span class="p9">你会看到这样的信息:</span></pre>
<pre><span class="p9">        00)   BPX USER32!GetWindowTextA C=01</span></pre>
<pre><span class="p9">你可以再按一次Ctrl+D,从SoftICE中退出,。</span></pre>
<pre><span class="p9">好了,不管怎么样,你已经设定好了断点以捕捉任何对GetWinowTextA的调用。
现在我们来在该输入注册码的地方输入一些数字,然后按下OK....你只得到了
一个信息框告诉你输入的注册码是无效的。看来不是GetWindowTextA....我们
来试试GetDlgItemTextA。首先删除旧的断点:
        :bc 0
(0 表示在断点列表中的第0个断点)</span></pre>
<pre><span class="p9"> 然后设定新的断点:
        :bpx getdlgitemtexta</span></pre>
<pre><span class="p9"> 再来试一次.....
</span></pre>
<pre><span class="p9">3.1.3 在调试器中
=====================
哇!行了!你已经在SoftICE中了,就在函数GetDlgItemTextA开始的地方。按
F11键,回到调用函数的地方。现在你到了SGLSET.EXE的内部,如果你还没把握
的话,看看代码窗和数据窗中间的一行,你应该看到这样的东西:</span></pre>
<pre><span class="p9">        ----------SGLSET!.text+1B13----------</span></pre>
<pre><span class="p9">你可以这样禁止一个断点:</span></pre>
<pre><span class="p9">        :bd 0</span></pre>
<pre><span class="p9">以后想再开启它的话,可以这样:</span></pre>
<pre><span class="p9">        :be 0</span></pre>
<pre><span class="p9">代码窗的第一行是:</span></pre>
<pre><span class="p9">        CALL    [USER32!GetDlgItemTextA]</span></pre>
<pre><span class="p9">按几次Ctrl+Up 直到你看到下面这几行。如果对汇编一点也不懂的话,看我加的 注解吧:</span></pre>
<pre><span class="p9">        RET                               ; 函数结束
        PUSH    EBP                       ; 函数开始
        MOV     EBP, ESP
        SUB     ESP, 0000009C
        PUSH    ESI
    &gt;   LEA     EAX, [EBP-34]             ; EAX = EBP-34
        PUSH    EDI
        MOVE    ESI, ECX
        PUSH    32                        ; 输入字符串的最大长度
    &gt;   PUSH    EAX                       ; 输入字符串的缓冲地址
        PUSH    000003F4                  ; 控制标识
        PUSH    DWORD PTR [ESI+1C]        ; 对话框的句柄
        CALL    [USER32!GetDlgItemTextA]  ; 取得输入</span></pre>
<pre><span class="p9">PUSH指令保存那些数值以供后面使用。我已经在重要的地方加上了一个 '&gt;'字符
作上记号. 看这几行我们就知道字符缓冲区的地址保存在EAX中,而EAX等于 EBP-34。</span></pre>
<pre><span class="p9">所以我们来看看EBP-34那里有什么:</span></pre>
<pre><span class="p9">        :d ebp-3</span></pre>
<pre><span class="p9">你应该能在数据窗中看到你输入的东西。下面我们得来找开始核对输入注册码的
地方。按F10一步一步地单步运行直到你发现与EBP-34有点关系的地方.... 你不
用单步运行多久,就会看到这些代码:</span></pre>
<pre>    <span class="p9">&gt;   LEA     EAX, [EBP+FFFFFF64]             ; EAX = EBP-9C
        LEA     ECX, [EBP-34]                   ; ECX = EBP-34
        PUSH    EAX                             ; 保存 EAX
        PUSH    ECX                             ; 保存 ECX
    &gt;   CALL    00403DD0                        ; Call 一子程序
        ADD     ESP, 08                         ; 删除保存的信息
        TEST    EAX, EAX                        ; 检查返回值
        JNZ     00402BC0                        ; 如果不是零的话跳转</span></pre>
<pre><span class="p9">对我来说,马上就可以看出这象是一个字符比较程序。它们工作起来就是这样:
        * 输入两个字符串
          如果相同就返回零
          否则返回非零</span></pre>
<pre><span class="p9">那为什么程序要用一个字符串来和你输入的相比较呢?看它是不是合法的!(可
能你已经想到了)。那么是什么东西躲在 [EBP+FFFFFF64] ? SoftICE处理负数

⌨️ 快捷键说明

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