发新话题
打印

[转载]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  来算出注册码来 .
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

发新话题