下面开始今天的破解,
破解需要的软件(点击下载):
侦壳language.exe
脱壳AspackDie.exe
反编译W32Dasm黄金中文版
16进制编辑器UltraEdit.rar
在破解之前先复习一下基础知识:
一.破解的等级
初级,修改程序,用ultraedit修改exe文件,称暴力破解,简称爆破
中级,追出软件的注册码
高级,写出注册机
二.用w32dasm破解的一般步骤:
1.看软件的说明书,软件注册与不注册在功能上有什么区别,如何注册
2.运行此软件,试着输入你的姓名和任意注册码去注册,有什麽错误提示信息,将错误提示信息记下来
3.侦测有无加壳(第一课).若加壳,脱壳(第二课)
4.pw32dasmgold反汇编
5.串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标
左键
6.pw32dasmgold主窗口中分析相应汇编,找出关键跳转和关键call
7.绿色光条停在关键跳转,在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址)
8.用ultraedit找到偏移地址(实际修改地址)修改机器码,保存
壳的概念:版权信息需要保护起来,不想让别人随便改动,exe可执行文件压缩,最常见的加壳软件ASPACK ,UPX,PEcompact 脱壳:拿到一个软件,侦测它的壳,然后我们要把它的壳脱去,还原它
的本来面目.若它没有加壳,就省事不用脱壳了.脱壳软件unaspack,caspr,upx,unpecompact,procdump
实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇
编出来的代码由三列组成
第一列行地址(虚拟地址)
第二列机器码(最终修改时用ultraedit修改)
第三列汇编指令
第一列第二列第三列
:0041BE38 2B45F0 sub eax, dword ptr [ebp-10]
:0041BE3B 6A42 push 00000042
:0041BE3D 50 push eax
:0041BE3E FF75F4 push [ebp-0C]
:0041BE41 FF75F0 push [ebp-10]
:0041BE44 FF35A8AB4400 push dword ptr [0044ABA8]
两种不同情况的不同修改方法
1.修改为jmp
je(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息
2.修改为nop
je(jne,jz,jnz) =>nop相应的机器码90 (正确信息向上找到的第一个跳转)nop的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处。
好了,下面开始我们的破解之旅。。。。。。。。。。
1,侦壳:先打开侦壳language.exe,选择打开----找到要破解的网络填表终结者:FormGhost.exe,点确定,如图1。language.exe便显示出软件的壳是:Aspack,如图2。
2,脱壳:双击脱壳AspackDie.exe,出现一个对话框,选择网络填表终结者:FormGhost.exe,打开。如图3。出现图4框,点确定脱壳完成。在网络填表终结者:FormGhost.exe同目录下生成一个unpacked.exe文件,这就是脱壳后的FormGhost.exe。
3,运行脱壳后的unpacked.exe,点帮助----注册,图9。注册名称,注册码随便添。图10。点注册,提示:“注册码错误”图11,好了记住这5个字。关了它。
4,开始反汇编:打开反编译W32Dasm黄金中文版,选择反汇编----打开脱壳后的unpacked.exe,变开始加载。如图5。图6。
返汇编之后如图7。点击上面的参考----串式参考如图8,
出现这个对话框图12。找到“注册码错误”,双击它,汇编主程序便来到这里:图13。
(注意:正确注册信息在错误信息之上)关闭串式参考框。看主程序:图14。从注册码错误向上找到第一个跳转(关键跳,除了jmp的其它跳:je,jne,jz,jnz),来到这里图15。
(它上面的call叫关键call。),双击关键跳,看软件最下面有一行字:Line:379267 Pg 7586 of 7626 Code Data@004ACB4B@Offset
00ACB4BH in File:unpacked.exe.其中@Offset 00ACB4BH就是偏移
地址,记住00ACB4B(后面的h代表16进制,不用管他),图16。
5,开始修改软件:打开16进制编辑器UltraEdit.rar,(有点慢)图17。打开脱壳后的unpacked.exe,直接按ctrl+g,出现对话框,输入
0xacb4b(即偏移地址,不要前面的000)图18。点确定,来到图19
前面说过正确注册信息在错误信息之上,所以这里将of85改为of84。图20。(如果正确注册信息在错误信息之下,这里改为eb)。将光标移到5上直接输入数字4即可,其他地方不要动。好了,改好只后左上角的文件---另存为unpacked222.exe
6,关闭所以软件,运行另存的unpacked222.exe,点帮助---注册,注册名称,注册码随便添,点确定,提示注册完成。图21。回到软件界面看看,帮助,注册一项已经变为灰色了,图22
7,破解全部完成
来自: https://www.doczj.com/doc/2d16156531.html,/jiadiandiy/blog/item/201f7fcb30ce274ff21fe798.html
如何破解软件
2008-09-06 11:00:00 分类:软件教程 | 数码 | 评论(0) | 浏览(1490) 作为一名程序员,由于我所编写的几款小软件经常被人破解,所以就对常见的软件破解方式比较关注。在这篇文章中,我把各种软件破解方式一网打尽,如算法注册机、内存破解法、补丁破解法和文件注册法等,以便大家“知己知彼,百战不殆”。同时,我也想让大家认识到,软件的加密和破解是一场长期的“猫和老鼠”的较量。(注:本文内容仅限于学术研究。)
一、算法注册机
算法注册机是在破解者分析了软件的注册码算法后,制作出来的一种可以自动生成软件注册码的程序(一般软件作者自己也编写得有算法注册机,用于卖软件)。由于用这种方式破解的软件和正版注册的一模一样,功能上没有任何区别,所以它是最完美的软件破解方式。下面介绍算法注册机的三种工作流程。
1.运行未注册软件,得到软件机器码,再用算法注册机算号注册
这类软件加密的特点是一个注册码只能在一台电脑上使用,像和电脑进行了一对一的绑定。在此以“南方排八字 4.6”为例说明。安装该软件后点击帮助菜单中的“注册”项,在注册窗口中就可以看到一个根据你的电脑而生成的惟一机器码。把这个机器码复制到对应的算法注册机中,点击Generate按钮就可得到软件的注册码(如图1)。最后,把算出来的注册码填入软件的注册码窗口,并随意填写注册人的姓名,就完成了软件的注册。
图为:运行未注册软件,得到软件机器码后,用算法注册机算号注册
2.用算法注册机直接算出注册码
这类软件的加密方式最普遍,用一个注册码就可以给不同的电脑上的同一软件注册。在此以UltraEdit v10.10c为例说明。安装该软件后它会提示你输入用户名和注册码。这时启动它所对应的算法注册机,输入一个自定义的用户名(如hacker),注册码就在下面自动生成了(如图2)。最后,把得到的注册码复制到UltraEdit的注册窗口中,并填上刚才自定义的用户名,注册结束。
图为:用算法注册机直接算出软件的注册码
3.用算法注册机直接注册
采用这种注册方式的软件非常少,其特点是一旦运行算法注册机,软件便注册成功了!在此以Clone.CD.4.3.2.2为例说明。安装好该软件后,不要启动它。先运行它所对应的算法注册机,保持默认用户名不变(也可自定义),当点击Exit 按钮退出后,该软件便被成功注册了(如图3)。
图为:利用算法注册机直接注册软件
二、内存破解法
内存破解法是先加载破解程序(内存注册机),再通过它去读取内存中软件的注册码,或修改内存中软件相关的某些数据,来达到破解软件的目的。
1.直接从内存中得到注册码
这种方法只须知道软件注册码的内存地址就行,无须掌握软件注册码的算法,很节省编写内存注册机的时间。在此以“玩转V3.12”为例。安装该软件后,把它的内存注册机复制到软件安装目录中。把你的手机连接到电脑上,并运行内存注册机。内存注册机会自动把该软件启动,跟着出现的手机向导往下走,会自动检测到手机。当检测完成后,内存注册机就自动弹出一个窗口,里面便是软件的注册码。把注册码记下来后点击“确定”按钮,会弹出软件注册窗口,填入注册码即可完成注册(如图4)。
图为:直接从内存中得到软件的注册码
2.使用Loader程序
此方法是在没有找到很好的破解方法时采用,它可以去掉软件运行时的注册提示窗口(或软件过期提示窗口),可在内存中模拟软件已注册的运行环境,甚至有的还能给软件带来一定的功能扩展。玩过网络游戏“传奇”的朋友应该知道这种破解方式,它有点像“传奇”的外挂。在此以UltraFXP v1.06为例说明。安装该软件后,把它对应的Loader程序复制到软件安装目录中,并把UltraFXP
的快捷运行方式从原来指向的UltraFxp.exe改为指向Loader程序。这样运行软件时就是先运行Loader程序,再运行该软件,而此时的软件环境就是“已注册”。网上流行的QQLDR程序也属于这种,它的作用是去掉QQ的广告,并显示对方的IP。这种外挂性质的破解方式优点是完全不用修改软件的程序文件(如图5)。
图为:像网络游戏外挂一样的Loader程序
三、补丁破解法
补丁破解法是指用相关的补丁程序来修改软件,以达到破解软件的目的。此方法一般是破解软件的验证注册码或时间,基本上都是修改原程序的判断语句。
在此以MSN Messenger 6.1为例说明。先不要运行它,而运行其破解补丁程序。在补丁程序中点击“Apply Patch”按键,指定MSN Messenger的安装目录。当点击“OK”按钮后,即可完成软件的破解(如图6)。经过以上操作,MSN Messenger的广告条就没有了,而且可以同时运行几个。
图为:用补丁破解MSN Messenger
四、文件注册法
文件注册法是把软件的注册内容放到一个文件里,以方便自己或别人用它来注册。
1.注册表导入
这种注册方式是通过运行.reg注册表文件进行注册,而软件注册码的注册表信息就存放在这个注册表文件中。破解的操作步骤是先安装软件,然后双击它的.reg破解文件,出现是否导入注册表的询问窗口后,点击“确定”按钮就完成了注册。Nokia LogoManager 1.3就是采用的这种破解方式,不过它的破解包含了主程序文件破解和注册表导入两种。
2.注册文件
采用这种注册方式的典型代表是WinRAR,其注册文件名为Rarreg.key,里面含有用户名和注册码等信息。安装WinRAR后,把Rarreg.key复制到软件的安装目录。当WinRAR运行时,就会自动读取注册文件里的信息,以验证软件的注册是否正确。
五、破解版
破解版是指用户到手的软件已经被破解,可以直接当正版的已注册软件使用。这种已破解的软件如果破解得不彻底,运行时就会出现一些问题(如随机性出错等),不像用注册机破解的效果那么好。
比如LogoManager File Converter,它后便可直接使用,因为它是被破解过的。还有一种破解版是只破解了软件的主程序文件。当软件安装好后,把已破解的主程序文件复制到软件的安装目录中,覆盖原主程序文件就完成破解了。
六、其他与破解相关的内容
1.查看NFO文件中的破解信息
很多从网上下载的软件都带有NFO文件,它里面有该软件的详细破解信息,如破解时间、组织、发布方式、破解方式以及安装方法等(如图7)。不过NFO文件基本上都是英语的,要有一定的英语基础才能看懂。查看NFO文件可用DAMN NFO Viewer(下载地址:点击下载),用记事本有时看不到里面的图案。
图为:LogoManager File Converter的NFO破解信息文件
2.0day与Warez
讲到破解软件,就不能不说0day与Warez。0day并不是指那些破解专家不到一天就能“搞定”某个软件,而是说他们能在最短的时间里把软件“解锁”,并发布在网上。0day的真正意思是“即时发布”,我们可以把它看做一种精神。Warez是对软件破解的泛称,其中“z”既表示复数,形容非常多,也表示0day 中的“0”(即zero),一语双关。0day其实就是Warez的一种传播形式。
世界上并不存在叫0day或Warez的跨国“邪恶”组织。如果有人说他属于“0day组织”,很多时候并不是指他真的在一个叫“0day”的破解组织里干活,而是指他(或他的组织)的软件破解行为符合0day精神。0day是非商业化、非盈利的软件志愿破解行为,市场上那些把0day软件做成盗版光盘销售的行为,与0day的本意无关。
通过本文,相信大家对软件的破解方式有了深刻的认识。提醒大家,非法的软件破解是对软件著作权人的一种侵害。下面是《计算机软件保护条例》的在线阅读地址: https://www.doczj.com/doc/2d16156531.html,/GB/it/20011228/637650.html,里面有些内容
值得大家注意,如未经软件著作权人许可,不得修改、翻译其软件,不得故意避开或者破坏著作权人为保护其软件著作权而采取的技术措施等
如何破解软件和制做注册机
2008-09-06 11:02:00 分类:软件教程 | 数码 | 评论(0) | 浏览(1091) 破解相信是一些朋友心中的神秘区域
在很多会员的要求下黑基决定让我制作这期的课程
今天我们要开刀的软件是大家都用过的一个东西
那就是黑基邮件服务器所用的软件
WebEasyMail
相信大家都用过黑基邮箱
这个软件我就不介绍了
想看详细资料的会员到
他的官方网站 https://www.doczj.com/doc/2d16156531.html,
但是我们还是要提提这个软件的价格
我想这样可以增加大家破解的成就感吧
中文标准版本价格
用户数标准版本价格 (人民币)
250 用户 530元
500 用户 930元
1000用户 1530元
2000用户 2130元
5000用户 2930元
无限制用户 3930元
这些是标准版的价格
530+930+1530+2130+2930+3930=11980
如果破了标准版我们就等于破了一个价值 11980元的软件
不过我们今天要破的企业版
企业版是这个软件的高级版本也是最好的版本但是企业版的没有报价
据一个朋友说无限制用户的企业版要10万元
再加上不同用户数大约企业版价值 30万
30万足可以让你心动了吧
那么我们动手吧
首先下载这个软件的企业版
这里是官方的下载地址
https://www.doczj.com/doc/2d16156531.html,/download/3621/EV/WebEasyMail.EXE
然后安装
这里要说一下这个只能安装到 nt架构的系统中比如nt/2k/xp/2003
如果你是9x系统赶快装一个nt架构的系统吧
安装结束
开始我们的破解之旅吧
步骤1 检测壳
壳的概念:
所谓“壳”就是专门压缩的工具。
这里的压缩并不是我们平时使用的RAR、ZIP这些工具的压缩,壳的压缩指的是针对exe、com、和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的壳。
壳的作用:
1.保护程序不被非法修改和反编译。
2.对程序专门进行压缩,以减小文件大小,方便传播和储存。
壳和压缩软件的压缩的区别是
压缩软件只能够压缩程序
而经过壳压缩后的exe、com和dll等程序文件可以跟正常的程序一样运行
下面来介绍一个检测壳的软件
PEID v0.92
这个软件可以检测出 450种壳
新版中增加病毒扫描功能,是目前各类查壳工具中,性能最强的。
另外还可识别出EXE文件是用什么语言编写的VC++、Delphi、VB或Delphi等。支持文件夹批量扫描
我们用PEID对easymail.exe进行扫描
找到壳的类型了
UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
说明是UPX的壳
下面进行
步骤2 脱壳
对一个加了壳的程序,去除其中无关的干扰信息和保护限制,把他的壳脱去,解除伪装,还原软件本来的面目。这个过程就叫做脱壳。
脱壳成功的标志
脱壳后的文件正常运行,功能没有损耗。
还有一般脱壳后的文件长度都会大于原文件的长度。
即使同一个文件,采用不同的脱壳软件进行脱壳,由于脱壳软件的机理不通,脱出来的文件大小也不尽相同。
关于脱壳有手动脱壳和自动脱壳
自动脱壳就是用专门的脱壳机脱很简单按几下就 OK了
手动脱壳相对自动脱壳需要的技术含量微高这里不多说了
UPX是一种很老而且强大的壳不过它的脱壳机随处就能找到
UPX本身程序就可以通过
UPX 文件名-d
来解压缩不过这些需要的命令符中输入
优点方便快捷缺点DOS界面
为了让大家省去麻烦的操作就产生了一种叫 UPX SHELL的外壳软件
UPX SHELL v3.09
UPX 外壳程序!
目的让UPX的脱壳加壳傻瓜化
注:如果程序没有加壳那么我们就可以省去第二步的脱壳了,直接对软件进行分析了。
脱完后我们进行
步骤3
运行程序
尝试注册
获取注册相关信息
通过尝试注册我们发现一个关键的字符串
“序列号输入错误”
步骤4
反汇编
反汇编一般用到的软件都是 W32Dasm
W32dasm对于新手易于上手操作简单
W32Dasm有很多版本这里我推荐使用 W32Dasm 无极版
我们现在反汇编WebEasyMail的程序文件easymail.exe
然后看看能不能找到刚才的字符串
步骤5
通过eXeScope这个软件来查看未能在w32dasm中正确显示的字符串信息
eXeScope v6.50
更改字体,更改菜单,更改对话框的排列,重写可执行文件的资源,包括(EXE,
DLL,OCX)等。是方便强大的汉化工具,可以直接修改用 VC++ 及 DELPHI 编制的程序的资源,包括菜单、对话框、字符串表等
新版可以直接查看加壳文件的资源
我们打开eXeScope
找到如下字串符
122,"序列号输入错误 "
123,"恭喜您成为WebEasyMail正式用户中的一员! "
124,注册成功
125,失败
重点是122
步骤6
再次返回 w32dasm
* Possible Reference to String Resource ID=00122: "?鲹e ?"
但是双击后
提示说找不到这个字串符
不是没有是因为 "?鲹e ?"是乱码 w32dasm对于中文显示不是太好
毕竟不是国产软件
先把今天会用到的汇编基本指令跟大家解释一下
mov a,b ;把b的值赋给a,使a=b
call :调用子程序,子程序以ret结为
ret :返回主程序
je或jz :若相等则跳转
jne或jnz :若不相等则跳转
push xx:xx 压栈
pop xx:xx 出栈
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。
我们搜索
Possible Reference to String Resource ID=00122
因为对E文支持很好
我们来到了
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00406F17(C) //跳转来自 406F17
* Possible Reference to String Resource ID=00125: "1%"
|
:004070DD 6A7D push 0000007D
:004070DF 8D4C2410 lea ecx, dword ptr [esp+10]
:004070E3 E8F75A1200 call 0052CBDF
* Possible Reference to String Resource ID=00122: "?鲹e ?"
|
:004070E8 6A7A push 0000007A
:004070EA 8D4C2408 lea ecx, dword ptr [esp+08]
:004070EE E8EC5A1200 call 0052CBDF
我们来到
:00406F01 8B876C080000 mov eax, dword ptr [edi+0000086C]这里是对
:00406F07 8B4C2408 mov ecx, dword ptr [esp+08]
:00406F0B 50 push eax//这两个eax和ecx入栈就比较让我们怀疑了
:00406F0C 51 push ecx//产生注册码
:00406F0D E8AE381100 call 0051A7C0//这CALL里对注册位应该会有设置
:00406F12 83C40C add esp, 0000000C
:00406F15 85C0 test eax, eax// 检测注册位
:00406F17 0F85C0010000 jne 004070DD //不存在注册位就会跳到4070DD就会出现那个错误的字串符了
我们记住406F01这个地址
接着进行下一步
步骤7
这一步我们进行的是调试
用到的软件是ollydbg
好了我们找到了注册码0012AF04 00FD4A10 ASCII
"04893e058f9c1c9fb16764c3b86f78e6"
但是这个并不是我们的主要目的