安全基地's Archiver

恶魔之子 发表于 2007-5-31 00:23

破解静态加密软件

通过本文您可以学到:
(1)软件注册方面的知识
(2)使用UPX脱壳、使用PEID查壳
(3)使用C32Asm、WinDasm进行汇编和反汇编方面的知识
本文用到软件:
(1)PEID
(2)UPX
(3)C32Asm
(4)WinDasm
   一般来说,作者在将软件编写出来后,出于安全和利益的考虑,往往会对软件进行加密,来防止盗版和保护合法者权益。软件加密强度跟作者的编程水平有关,本文所说的软件加密也就是平常所见的软件注册。
(一)软件注册方式
软件注册主要有以下几种:
(1)注册码方式
     现在绝大多数软件都采用注册码方式进行保护,这种方式便于在因特网上进行交易,没有额外的成本,在软件没有注册前,一般来说都会对软件的功能、时间和次数等进行限制。常见的注册码方式有“机器码+注册码”、“用户名+注册码”、“组合方式+注册码”,其中最简单的就是早期的固定字符串的软件注册,即设置一个固定的字符串,如果输入的字符串跟指定的相符,则执行程序的正常功能,否则提示退出或者重新输入验证码。
(2)加密狗方式
    加密狗方式多见于商业软件,而且一般都会有一个形同U**盘的一个硬件,由于一个加密狗成本在几十元以上,因此个人软件很少使用加密狗方式。
(3)光盘加密
    光盘加密常见于游戏光盘,防止原版光盘被非法复制。
(4)网络验证
     网络验证是软件在注册时要在线连接到官方网站进行注册,或者在注册后会不定期地自动连接到官方网站进行正版校验,如果不通过则视为盗版或者试用版本。
(5)NAG窗口
    软件在没有注册或者软件的试用版会经常弹出一些提示窗口,要求注册,这些窗口就被称为NAG窗口,而且NAG窗口在软件试用期过后,很可能会屏蔽软件的正式窗口或者某些重要功能窗口,使得软件不能被正常使用。
(二)破解实例
    本例中的注册码是固定的字符串,自由输入正确的字符串才会显示“Welcome”,否则显示“I am Sad!”,程序运行界面如图1所示。
[img]http://blog.51cto.com/attachment/200705/200705291180407239015.jpg[/img]
[size=3]1[font=宋体].查壳[/font][/size]
[size=3]
[font=宋体]对于破解软件来说,第一步往往是检查软件是否进行了加壳处理,目前网络上面有很多可以用来查壳的软件,例如大名鼎鼎的[/font]PEiD[font=宋体]等。直接运行[/font]PEiD v0.93[font=宋体]版本,然后选择需要查壳的文件,选择完成后,如果能够识别,会自动显示是采用什么方式进行加壳的,即显示为“[/font]UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo[font=宋体]”(图[/font]2[font=宋体])。即采用[/font]UPX[font=宋体]软件进行加壳的。如果程序没有加壳,则会显示为具体的编程语言。[/font][/size]
[img]http://blog.51cto.com/attachment/200705/200705291180407264972.jpg[/img]
[size=3]2[font=宋体].脱壳[/font][/size]
[size=3]
[font=宋体]查出被破解软件是采用什么方式的加壳软件后,然后选择相应的脱壳软件进行脱壳,我所采用的[/font]UPX[font=宋体]脱壳软件需要进行,安装完成后会自动将脱壳的一些操作加入到文件打开菜单中,需要脱壳时选中文件,右键单击,选择“[/font]UPX ShellEx[font=宋体]”-“[/font]UPX[font=宋体]通用脱壳机”,软件自动脱壳(图[/font]3[font=宋体])。[/font][/size]
[img]http://blog.51cto.com/attachment/200705/200705291180407279804.jpg[/img]
[size=3]  [font=宋体]说明:有的软件可能采用多种方式加壳,对于这种脱壳就需要一层一层的脱,一般脱壳成功后,会进行一些文字上的提示(图[/font]4[font=宋体])。[/font][/size]

[img]http://blog.51cto.com/attachment/200705/200705291180407294024.jpg[/img]
[size=3]3[font=宋体].反汇编原文件[/font][/size]
[size=3]
[font=宋体]本文采用[/font]W32Dasm[font=宋体],[/font]W32Dasm[font=宋体]是一款绿色的、功能非常强大的反汇编工具,最高版本为[/font]8.93[font=宋体],目前已经不再更新了,一些爱好者根据需要对其进行了修改,出现了后续一些版本,本文使用的就是修改后的版本,称为[/font]W32Dasm 10.0[font=宋体]版本。[/font]W32Dasm[font=宋体]反汇编出的源代码主要用来分析程序的一些基本信息、显示出程序使用的各个寄存器段、区段、程序包含的对象以及应用的函数等信息(图[/font]5[font=宋体])。[/font][/size]
[img]http://blog.51cto.com/attachment/200705/200705291180407306983.jpg[/img]
[size=3][font=宋体]使用[/font]W32Dasm[font=宋体]反汇编原文件后,主要用来查找一些字符串,这些字符串可能跟注册有关,在本例中主要查找“[/font]I am Sad![font=宋体]”,在[/font]W32Dasm[font=宋体]的菜单中选择[b]“参考”[/b]-[b]“串示数据参考”[/b],在弹出的[b]“[/b][/font][b]W32Dasm[/b][b][font=宋体]串式参考内容清单”[/font][/b][font=宋体](图[/font]6[font=宋体])中拖动*动条查找[b]“[/b][/font][b]I am Sad![/b][b][font=宋体]”[/font][/b][font=宋体]字符串。[/font][/size]
[img]http://blog.51cto.com/attachment/200705/200705291180407325830.jpg[/img]
[size=3][b][font=宋体]注意:[/font][/b][font=宋体]使用[/font]W32Dasm[font=宋体]反汇编的应该式脱壳以后的原文件。[/font][/size]
[size=3][b][font=宋体]技巧:[/font][/b][font=宋体]在查找字符串时,由于字符串是按照字母顺序进行排序的,因此可以以查找字符串首字母所在位置进行查找。[/font][/size]
[size=3]
[font=宋体]查找字符串的目的就是为了定位地址,找到“[/font]I am Sad![font=宋体]”字符串后,双击该字符串后,会自动跳转到[/font]W32Dasm[font=宋体]反汇编窗口,并以浅绿色加亮显示一条数据,记下加亮显示数据的地址信息,在本例中为“[/font]004513E6[font=宋体]”(图[/font]7[font=宋体]),在该地址上方,有一个跳转([/font]jne[font=宋体]),在“[/font]Welcome[font=宋体]”字符串上面有一个“[/font]jne[font=宋体]”跳转的地址,记下该地址“[/font]004513D2[font=宋体]”。[/font][/size]
[img]http://blog.51cto.com/attachment/200705/200705291180407338378.jpg[/img]
[size=3]4[font=宋体].使用[/font]C32sam[font=宋体]反汇编工具汇编原文件[/font][/size]
[size=3]C32asm[font=宋体]也是一款反汇编工具,[/font]C32asm[font=宋体]可以直接对反汇编的文件进行十六进制或者直接进行汇编代码的修改。使用[/font]C32asm[font=宋体]反汇编原文件以后,鼠标右键单击,在菜单中选择“跳到”,在[/font]Eip[font=宋体]跳转对话框中输入跳转地址“[/font]004513D2[font=宋体]”(图[/font]8[font=宋体]),然后单击“确定”,回到[/font]C32asm[font=宋体]反汇编窗口。[/font][/size]
[img]http://blog.51cto.com/attachment/200705/200705291180407353109.jpg[/img]
[size=3]
[font=宋体]回到[/font]C32asm[font=宋体]窗口会高亮显示,选中记录“[/font][b][color=red]:004513D2:: 75 12[color=#000000]  [/color]JNZ SHORT 004513E6[/color][/b][font=宋体]”然后右键单击,在菜单中选择“对应[/font]Hex[font=宋体]编辑”,然后再次右键单击,在弹出菜单中选择“对应汇编模式编辑”,再次选中记录“[/font][b][color=red]:004513D2:: 75 12[color=#000000]  [/color]JNZ SHORT 004513E6[/color][/b][font=宋体]”右键单击,在弹出菜单中选择“汇编”(图[/font]9[font=宋体],图[/font]10[font=宋体]),直接将[color=red]“[/color][/font][b][color=red]JNZ[color=#000000]     [/color]SHORT 004507E6[/color][/b][color=red][font=宋体]”修改为“[/font][/color][color=red]NOP[/color][color=red][font=宋体]”或者[b]“[/b][/font][/color][b][color=red]JE[color=#000000]     [/color]SHORT 004507E6[/color][/b][color=red][font=宋体]”,然后保存。[/font][/color][/size]
[img]http://blog.51cto.com/attachment/200705/200705291180407366018.jpg[/img]
[img]http://blog.51cto.com/attachment/200705/200705291180407378295.jpg[/img]
5.运行破解后的文件
   运行破解后的程序“CrackmeNo1_Unpack.exe”,随便输入一个注册码,都会显示“Welcome!”字符串。到此程序破解完成。

[img]http://blog.51cto.com/attachment/200705/200705291180407401248.jpg[/img]

[[i] 本帖最后由 恶魔之子 于 2007-5-31 00:29 编辑 [/i]]

shangxintianshi 发表于 2007-6-2 09:07

支持一下呀!!!

windman 发表于 2007-10-25 20:36

呵呵今天我做的教程跟你讲的差不多啊```

kelvar 发表于 2008-4-7 20:51

这个好简单呀
呵呵
连我这菜鸟都看的 明明白白:lol

烈火命运 发表于 2008-7-24 09:04

很好很强大啊

页: [1]

Powered by 安全基地 Archiver 6.1.0  © 2001-2007 本SEO插件由网络人站长论坛出品