经典破解教学(破解实战之静态分析技术) 破解教学第八课
W32DASM介绍
一、静态分析 欲破解一软件,首先应该先用用这个软件,了解一下功能是否有限制,最好阅读一下软件的说明或手册,特别是自己所关心的注册部分的使用说明,这样也许能够找到点线索。 所谓静态分析即从反汇编出来的程序清单上分析。从提示信息入手进行分析. 目前,大多数软件在设计时,都采用了人机对话方式。所谓人机对话,即在软件运行过程中,需要由用户选择的地方,软件即显示相应的提示信息,并等待用户按键选择。而在执行完某一段程序之后,便显示一串提示信息,以反映该段程序运行后的状态,是正常运行,还是出现错误,或者提示用户进行下一步工作的帮助信息。为此,如果我们对静态反汇编出来的程序清单进行阅读,可了解软件的编程思路,以便顺利破解。 人机对话方式给破解带来了方便.
二、W32DASM介绍 crack时常用的静态分析工具是W32DASM.W32DASM终结版是8.93版. 大家要用的是W32DASM黄金版中文版,功能强,能完美显示中文 W32DASM黄金版中文版能很方便地反汇编程序,它主要用于静态分析软件,不要用它作动态分析。其使用也很简单,参照后面的范例很快就能掌握。 这里只介绍一下如何截取W32DASM部分代码,这样方便写破解心得。 你将鼠标移到W32DASM最左边,点一下,将有一红点出现,再按住shift键,移到你需要的下一行,再按鼠标一下,将选中一段,按CTRL+C复制,CTRL+V粘贴到你的记事本或其它编辑处。
三、 实际修改地址(偏移地址)和行地址(虚拟地址)
W32DASM黄金版中文版反汇编出来的代码由三列组成
第一列 行地址(虚拟地址)
第二列 机器码(最终修改时用ultraedit修改)
第三列 汇编指令
第一列 第二列 第三列
:00418000 FF21 jmp dword ptr [ecx]
:00418002 029000070008 add dl, byte ptr [eax+08000700]
:00418008 00D4 add ah, dl
:0041800A A940008EDD test eax, DD8E0040
:0041800F 75DB jne 00417FEC
:00418011 3F aas
:00418012 AA stosb
:00418013 03DC add ebx, esp
:00418015 07 pop es
:00418016 050F1DAB40 add eax, 40AB1D0F
:0041801B 1B24AB sbb esp, dword ptr [ebx+4*ebp]
:0041801E C9 leave
:0041801F 93 xchg eax,ebx
:00418020 27 daa
:00418021 CF iret
在W32DASM下将绿色的光条移到某一行代码上,在窗口底部可看到 例如@:00418016 @:Offset 00000416h 第一个@指示行地址(虚拟地址),@00418016 与W32DASM光条所在行的第一列相同 第二个@指示实际修改地址(偏移地址),@Offset 00000416h h表示十六进制 offset的英文意思是偏移
****破解程序的最后一步(注意:修改程序时必须确保程序已脱壳):
在要修改的行上点击鼠标右键==>Hexedit 即可修改,点击“保存”后会在程序目录下生成一个P***的文件 (如果你的W32DASM版本不够高的话,那就只能用ultraedit修改咯!)方法:打开欲修改的文件,敲入ctrl-g,0x偏移地址(如上面的敲入0x00416),即可到达实际修改地址
四.W32DASM黄金版中文版
1."反汇编"菜单下的"打开文件"打开可执行文件,如aa.exe即可 注意:可执行文件不能有壳,切记!! 若有壳,参照前面的教学解决!
2."参考"菜单中的"串式参考",出现一个新的窗口,使其变小,刚好位于W32DASM黄金版中文版主窗口的前面 找到其中的某一条目,双击鼠标左键,你会看到主窗口的绿色光条会移到某一行上 多次反复双击,看绿色光条一共会移到哪几行,有时只有1行,有时有很多行 3.W32DASM黄金版中文版只要会用这两个地方就可以了,其他的不用掌握.
===================================================
破解教学第九课
从NAG窗口突破!
破解人:飘云
工具:w32dasm hiew
对象:sa20c
简介: StayAlive 文件大小: 411kb 文件类型:30 Day Trial
这个软件使你的应用程序在崩溃后可以继续运行。允许你先存盘然后安全退出程序。
程序使用高级的保护措施,从而有效捕获错误,避免更大损失。 StayAlive 运行于系统栏。
当程序崩溃时,StayAlive 自动干预,可以使挂起的程序轻松解锁。
[url]http://www.tfi-technology.com/sa20c.exe[/url]
第一步:将 sa.exe 复制两份命令为 sa.exx 及123.exe .
第二步:运行w32dasm ,将123.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 123.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 来算出注册码来
=====================================================
破解教学第十课
从NAG窗口突破!
破解人:飘云
工具:W32dasm,Hiew
对象:WWMAIL 2.40 发垃圾邮件的工具,支持BCC,一次可发无数封垃圾信.
第一步:首先把主程序WWMAIL.EXE复制两份,分别命名为WWMAIL.EXE和123.EXE,
第二步:运行:W32DASM,将WWMAIL.EXE反编译.
第三步:我们先不忙着分析,先来看看这个软件的大概样子吧. 运行WWMAIL.EXE,弹出一个NAG窗口,看看写的是什么,说不定有一些线索.嗯,"如果不注册,在发出5封信后将暂停一下...", "BCC功能也不能用..."...注意这句"BCC FUNCTION WILL NOT OPERATE",想象一下,如果我点中BCC选项,那么应该会弹出 一个窗口说未注册不能用之类的话,那么在这个窗口之前一定有一个地方判断是否注册!对,从这里试试看能不能突破?
第四步:继续运行WWMAIL,点一下SETUP菜单,出现一个设置窗口,其中有一项是: "SEND VIA BCC IF POSSIBLE", 点一下,弹出一个窗口说:"BCC IS DISABLED IN THIS SHAREWARE",OK,找到了突破口了.8-)
第五步:回到W32DASM,点string data items按钮,向下找到"BCC IS DISABLED INTHIS SHAREWARE",双击,然后关掉STRING DATA窗口.
第六步:此时W32DASM的光条应该停在下面这行上: * Possible StringData Ref from Code Obj -> "BCC IS DIS..." :0046E917 B83CE94600 MOV EAX,0046E93C ......
第七步:向上移动光条直到我们找到这样的语句:cmp,test,xor等等. :0046e903 803d610e470000 cmp byte ptr [00470e61],00 :0046e90a 7422 je 0046e92e ......
第八步:对了对了,就是这了,第一句判断是否注册,如果没有则显示那个"BCC..."窗口.注意到程序是读取内存中的某个位置的 值来判断是否注册的,所以只要找到所有读取此处值的语句就可以找到所有的判断点.
第九步:从DOS窗口启动HIEW 123.EXE.切换为DECODE模式.然后按F7搜索:803D610E470000,一共可以找到四个地方,然后将其后的 JE改成JNE或者JMP,将JNE改成JE或者9090. 第十步:按F9将修改存盘,退出HIEW. 第十一:在DOS下运行1.EXE试试?ULA!成功了!8-))
====================================================
破解教学十一课
攻破 NET VAMPIRE 3.2 !
工具:W32dasm,Hiew
NET VAMPIRE 3.2 这个软件的注册方法很普通,也是用注册码来注册,唯一有些 不同的是不论你输入的注册码是否正确,它都对你说:"Thank you......",它只是在 刚刚启动时读入VAMPIRE.KEY来判断是否为注册版.如果你是注册版,那么它不会再 显示那个广告条,而且在菜单中的"REMOVE BANNER"项也不再显示.
攻破它花了我不少的功夫,最后终于在它的提示里找到了一丝线索: 先用W32DASM把它反汇编,然后点STRING REF按钮,在其中仔细查看,突然间看到 一行字:"Registered to:",嗯,有点门了.双击它,转到主窗口,将光标向上移:
:00480b7b a150d04900 mov eax,dword ptr [0049d050]
:00480b80 833800 cmp dword ptr [eax],00000000
:0048db83 7426 je 00480bab
好,找到地方了.
启动HIEW 1.EXE,寻找833800,把其后的74改成75,75改成74,然后存盘.
运行一下试试......
????!!!! 死机了????!!!!
老天!
只好重新用W32DASM仔细分析,然而我估计NET VAMPIRE的作者有意在软件 中作了一些反破解的方法,所以......而且软件中很难再找到其他的有用的 信息了.
那么怎么办呢? 正当我无法可想准备放弃时,突然灵光一闪! 造成死机的原因是软件中对 cmp dword ptr [eax],00000000 的结果 处理方向有好几个,我直接把75改成74,74改成75,有可能改动了正确的程序 导向,那么如果我......
对!如果我把那句比较语句改成: cmp dword ptr [eax],00000001 应该可以解决死机的问题?!
说干就干,运行HIEW 1.EXE,寻找833800,改成833801,存盘退出.
试运行一下......
WULA ! ! !
成功了!
再也看不见那个讨厌的广告条了!菜单中的那个"Remove banner"也没了!
> >