打印

W32DASM范例 例四

W32DASM范例 例四

文章作者:Cai Jie

实战演练一 : 从 NAG 窗口突破
工具 :w32dasm hiew


对象 :sa20c

下载:http://go.163.com/~toye/bigeg/sa20c.exe


简介 : StayAlive 文件大小: 411kb 文件类型: 30 Day Trial 这个软件使你的应用程序在崩溃后可以继续运行。允许你先存盘然后安全退出程   序。程序使用高级的保护措施,从而有效捕获错误,避免更大损失。 StayAlive 运行于系统栏。当程序崩溃时, StayAlive 自动干预,可以使挂起的程序轻松解锁。   


第一步 : 将 sa.exe 复制两份命令为 sa.exx 及 1.exe .


第二步 : 运行 w32dasm , 将 1.exe 反汇编 .


第三步 : 一旦反汇编成功 , 点 STRING DATA REFERENCE, 然后将光标移到 "You are on day %lu of your %lu day evaluation period", 双击 , 然后关闭此窗口 , 回到主窗口 . 此时绿色的光条应该停在下面一行上 :


* possible reference to string resource id=02111 "You are......"


第四步 : 将光条上移 , 找到下面这行 :


* referenced by a (u)nconditional or (c)onditional jump at address:


|:00401230(c)


这句的意思就是这个 NAG 窗口是从 00401230h 处调用的 . 然后我们光条移到 00401230h 处 :


:00401230 7472 je 004012a4


第五步 : 将光条向上移直到找到如下命令为止 :cmp,je,jne,test 等等 :


00401227 e8aa9c0000 call 0040aed6 * 此处应该是调用注册识别信息


0040122c 59 pop ecx


0040122d 85c0 test eax,eax * 此处判断 EAX 是否为 0, 如果为 0 则表示未注册


0040122f 59 pop ecx


00401230 7472 je 004012a4 * 如果为 0 就跳到 nag 窗口


那么 , 我们就去瞧瞧这个识别注册信息的子程序吧 :


第六步 : 将光条移到 :0040aed6 , 可以看到下面这行 :


* referenced by a call at addresses:


|:00401227 :00407da9 :0040b1c1


上面这一行非常重要 , 这表明了在这个软件中共有三次识别软件是否注册的过程 . 因此我们在 CRACK 时 , 要注意在这三个地方进行 , 少了其中一个都不成功 .


第七步 : 下面的过程就很简单了 :


进入 DOS 窗口 , 运行 hiew 1.exe, 按 F4, 选择 decode mode, 然后按 F5,goto 1227: 将 :00401230 处的 je 改成 jne 即可 . 接着 goto 7da9,b1c1, 依样将三处的 je 改为 jne, 然后按 F9 将修改存盘 . 退出 .


快试试吧 !


当然 , 其实还有更简单的方法 :


从上面的语句可以看出来 , 该程序是通过 EAX 的值是否为 0 来判断软件是否注册 . 因此我们可以直接对子程序 :0040aed6 进行改写 :


mov eax,01


retn


这样就可以了 .


以上的方法属于暴力解密 , 如果你对汇编及 SICE 非常精通的话 , 可以通过研究 :0040aed6 来算出注册码来 .

TOP