正文

破解入门2005-09-26 10:27:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wukong/5346.html

分享到:

第一课 壳

************

一.壳的概念
作者编好软件后,编译成exe可执行文件
1.有一些版权信息需要保护起来,不想让别人
随便改动,如作者的姓名等
2.需要把程序搞的小一点,从而方便使用
于是,需要用到一些软件,他们能将exe可执行文件压缩,
实现上述两个功能,这些软件称为加壳软件或压缩软件.
它不同于一般的winzip,winrar等压缩软件.
它是压缩exe可执行文件的,压缩后的文件可以直接运行.

二.加壳软件
最常见的加壳软件ASPACK ,UPX,PEcompact
不常用的加壳软件WWPACK32;PE-PACK ;PETITE ;NEOLITE

第二课 脱壳
************
拿到一个软件,我们首先根据第一课的内容
侦测它的壳,然后我们要把它的壳脱去,还原它的
本来面目.若它没有加壳,就省事不用脱壳了.
一.脱壳软件
unaspack,caspr,upx,unpecompact,procdump
二.使用方法
(一)aspack壳 脱壳可用unaspack或caspr
1.unaspack  我的主页可下载中文版
使用方法类似lanuage
傻瓜式软件,运行后选取待脱壳的软件即可.  缺点:只能脱aspack早些时候版本的壳,不能脱高版本的壳
2.caspr
第一种:待脱壳的软件(如aa.exe)和caspr.exe位于同一目录下,执行
windows起始菜单的运行,键入 caspr aa.exe
脱壳后的文件为aa.ex_,删掉原来的aa.exe,将aa.ex_改名为aa.exe即可
使用方法类似fi  优点:可以脱aspack任何版本的壳,脱壳能力极强 缺点:Dos界面

第二种:将aa.exe的图标拖到caspr.exe的图标上

***若已侦测出是aspack壳,用unaspack脱壳出错,说明是aspack高版本的壳,用caspr脱即可
(二)upx壳 脱壳可用upx
待脱壳的软件(如aa.exe)和upx.exe位于同一目录下,执行
windows起始菜单的运行,键入
upx -d aa.exe

(三)PEcompact壳 脱壳用unpecompact   我的主页可下载中文版

使用方法类似lanuage
傻瓜式软件,运行后选取待脱壳的软件即可


(四)procdump 万能脱壳但不精,一般不要用 我的主页可下载中文版
使用方法:运行后,先指定壳的名称,再选定欲脱壳软件,确定即可
脱壳后的文件大于原文件
由于脱壳软件很成熟,手动脱壳一般用不到,不作介绍.
以上工具的下载地址见第一课
三. exe可执行文件编辑软件ultraedit
下载它的汉化版本,它的注册机可从网上搜到
ultraedit打开一个中文软件,若加壳,许多汉字不能被认出
ultraedit打开一个中文软件,若未加壳或已经脱壳,许多汉字能被认出
ultraedit可用来检验壳是否脱掉,以后它的用处还很多,请熟练掌握
例如,可用它的替换功能替换作者的姓名为你的姓名
注意字节必须相等,两个汉字替两个,三个替三个,不足处在ultraedit编辑器左边用00补

 

第三课 破解预备知识

一.机械码,又称机器码.
ultraedit打开,编辑exe文件时你会看到
许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码
就是机器码.
修改程序时必须通过修改机器码来修改exe文件.

二.需要熟练掌握的全部汇编知识(只有这么多)
不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了
cmp a,b 比较a与b
mov a,b 把b的值送给a
ret 返回主程序
nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面
(解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop)
call 调用子程序
je 或jz 若相等则跳(机器码74 或0F84)
jne或jnz 若不相等则跳(机器码75或0F85)
jmp 无条件跳(机器码EB)
jb 若小于则跳
ja 若大于则跳
jg 若大于则跳
jge 若大于等于则跳
jl 若小于则跳
jle 若小于等于则跳
pop 出栈
push 压栈

三.常见修改(机器码)
74=>75 74=>90 74=>EB
75=>74 75=>90 75=>EB

jnz->nop
75->90(相应的机器码修改)

jnz -> jmp
75 -> EB(相应的机器码修改)

jnz -> jz
75->74 (正常) 0F 85 -> 0F 84(特殊情况下,有时,相应的机器码修改)

四.两种不同情况的不同修改方法
1.修改为jmp
je(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息

xxxxxxxxxxxx 出错信息,例如:注册码不对,sorry,未注册版不能...
"Function Not Avaible in Demo" 或 "Command Not Avaible" 或 "Can't save in Shareware/Demo"等 (我们希望把它跳过,不让它出现)
。。。
。。。
xxxxxxxxxxxx 正确路线所在

2.修改为nop
je(jne,jz,jnz) =>nop相应的机器码90 (正确信息向上找到的第一个跳转) nop的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处

xxxxxxxxxxxx 正确信息,例如:注册成功,谢谢您的支持等(我们希望它不被跳过,让它出现,程序一定要顺利来到这里)
。。。
。。。
xxxxxxxxxxxx 出错信息(我们希望不要跳到这里,不让它出现)
。。。
。。。
五.爆破无敌口诀 背会此口诀,天下无敌,以后慢慢琢磨,仔细体会,收益多多。如此好的口诀,不要错过
一条(跳)就死,九筒(90)就胡   (对应上面的2.修改为nop
一条(跳)就胡,一饼(EB)伺候   (对应上面的1.修改为jmp
妻死(74)便妻无(75)
爸死(84)便爸无(85)


阅读(3286) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册