赚钱最快的方法有两种:一种是根据一万小时天才理论专注于你感兴趣的某个赚钱项目;另一种是利用人性中的贪嗔痴进行引诱,洞察痛点、满足需求。。。挥剑斩浮云V/Q:67257595
发新话题
打印

[原创] 挥剑斩浮云电脑技术之我谈破解

本主题由 zzm270782357 于 2023-7-7 12:24 移动

挥剑斩浮云电脑技术之我谈破解

瞄到一款要注册的软件,先看下能不能破,是能破解的软件吗?有这么一句话:若软件能在本机上完整的运行一遍;一般是可以破解的.若软件是Demo(演示试用版),那就不用白忙了.你可以休息了.
能破的就先查壳,工具如peid,die, 有壳常规的方法是先脱壳,不同的壳有不同的脱法,有的有好几种脱的方法,这就看你的能力了.一般小壳用脱壳机就可以搞定的,如RL!dePacker ,quick unpack,超级巡警之虚拟机自动脱壳机.我这人很懒的,能用脱壳机脱的,绝对不会手脱,个人认为脱壳只是破解的一部分,重要的还在于破解,脱壳我要的只是一个结果,就是把它脱掉,至于怎么脱的这个过程就可以随意了.
    说到手脱,谈谈几种最基本的方法吧~ 工具:OD
1.单步跟踪
OD载入,不分析代码,.近CALL—F7,远CALL—F8,实现向下的跳转.有回跳处,下一句代码处—F4 (右键—代码断点运行到所选),大的跳转(大跨段,JMP***或JE***或RETN),很快就会到OEP.
2.ESP定律
F8,观察OD右上角寄存器中ESP有没有实现(红色),.命令行下 DD ******(当前代码ESP值),回车,DD就选中下端地址,断点—硬件访问—DWORD断点,F9运行,到跳转处按F8 到DEP.
3.最后一次异常
OD打开—点选项—调试选项—去掉所有异常—CTRL+F2重载,SHIFT+F9.只到程序运行,记下次数M,CTRL+F2重载—按SHIFT+F9(次数为M-1次),按CTRL+G—输入OE右下角的SE句柄前的地址,F2下断—SHIFT+F9到断点处,去断按F8,到OEP.
4.内存镜像
OD载入软件,点选项—调试选项—忽略全部—CTRL+F2重载,ALT+N打开内存镜像,找程序第一个.rsrc—F2下断—SHIFT+F9运行到断点,再打开找到程序第一个.rsrc上面的.code处(就是00401000处),F2下断—SHIFT+F9或无异常按F9,到OEP.
5.模拟跟踪
无暗桩情况下使用
F9试运行,跑起来就无SEH暗桩之类的,否则就有,.ALT+N打开内存镜像,找到包含“=sfx,imports reloco tions”字符,地址=***   命令行输入:tceip<***,回车.
6.一步到OEP
只适合少数壳,如UPX,ASPACK
CTRL+F—输入:POPAD.回车查找—F2下断—F9运行到此处,来到大跳转处,点F8到OEP.
7.SFX
设置OD,忽略所有异常,切换到SFX选项卡,选择“字节模式跟踪实际入口”,确定,.重载—“否”压缩代码,到OEP.
至于那些变形壳,双重壳,超强壳,你可能要运用到几种方法,还可能要用到脚本,或者改点什么,这基本上都有人做过总结的,什么壳用哪种方法,详细步骤等等,你去专门的网站搜下就可以找到的.
壳脱完后不要忘记修复,工具:Import REConstructor(小鸟,我起的名字,呵呵)
请记住这么一句话:一款软件脱壳后要修复是很正常的一件事.
修复后能运行了,就随意输入什么东西试注册下,关闭再运行,瞄下软件是哪种注册类型的:
若有注册错误/正确提示,下bp MessageBoxA断点 VB程序下bp rtcMsgBox
若无任何提示,下bp GetDlgItem
若下次启动提示,下bp GetDlgItem获取按钮事件代码
若未注册一启动或关闭就跳出个注册框或提示框,下bp RegOpenKey(A)或 bp CreateFileA或bp GetPrivateProfileStringA.
若未注册一启动或关闭就打开网页链接,下 bp ShellExecuteA
若未注册就日期限制,下bp GetLocalTime 获取本地时间,bp GetSystemTime 获取系统时间bp GetFileTime 获取文件时间
若网络验证,下bp ExitProcess 改网络验证为本地验证
若狗加密,一启动就会检测所需要的狗文件,下bp CreateFileA;若没有狗文件,提示错误,下bp MessageBoxA
找到关键CALL及关键跳,接下来你是想爆破或追码或写注册机,那就真的要看你的能力了.
爆破常见修改:
jnz/jne->nop 75->90
jnz/jne -> jmp 75-> EB
jz/je->nop 74->90
jz/je -> jmp 74-> EB
jnz -> jz 75->74 或 0F 85 -> 0F 84
jz -> jnz 74->75 或 0F 84 -> 0F 85
jnz -> jz 75->74 或 0F 85 -> 0F 84
je-> jne 74->75 或 0F 84 -> 0F 85
爆破有首无敌口诀的:
一条(跳)就死,九筒(90)就胡 (对应上面的(2)――修改为nop)
一条(跳)就胡,一饼(EB)伺候 (对应上面的(1)――修改为jmp)
妻死(74)便妻无(75)
爸死(84)便爸无(85)
追码我知道的方法:
1.OD载入.使用自带的"ULtra字符串参考"插件(一般VB的程序就用UNICODE!非VB的就用ASCII),查找到提示信息双击之,向上看,查找关键CALL,F2下断,F9运行,随意输入注册,程序若被断下,看右边的寄存器窗口.
2.OD载入,按CTRL+N,找比较函数(譬如C++编写的,找lstrcmpA,VB编写的,找_vbastrcomp),点右键的enter,F2下断,F9运行,随意输入注册,程序若被断下,看右边的寄存器或右下脚的内容.
3.用W32Dasm(非无极版)载入程序,参考---串式参考,找提示信息,双击来到代码处,向上找关键CALL(一般关键跳上面的一个CALL就是关键CALL),记下前面的代码,OD载入,CTRL+G输入记下代码,F2再F9,随意输入注册,若被断下,看右边.
4.用W32Dasm(非无极版)载入,点击函数-输入,找比较函数,双击之.调试-加载处理(CTRL+L),直接点载入,W32Dasm停下来,若乱跑,请重头再来,F2下断加亮的那行,前面出现小黄块后按F9,随意输入注册,若被断下,可以看见我们输入的假注册玛,向下找真注册玛.
5.随意输入注册,记下提示信息.使用WinHex,打开RAM,找到最下面那一行,点确定-整个内存再点确定,CTRL+F-填入你随意输入的假注册码,一般真注册码就在上面,若不在,请按F3继续查找.
写注册机,我习惯用keymake,当然你若会一种或多种编程语言,用之写注册机,那就更能说明你牛了, 呵呵~~~
有很多人问:学破解有什么条件吗?
有人开玩笑说过:性别只能是男或女,年龄 > 7 岁,智商正常,可以独立完成电脑开机关机,无理解障碍,无视觉障碍......
个人认为学破解最好知道点汇编知识,有句名言说:学破解不懂汇编者永远只能是菜鸟.这句话到真的一点都没有夸张,真的是这样.
这里写一点汇编最基本的东西吧:
cmp a,b //比较a与b
mov a,b //把b的值送给a,使a=b
ret //返回主程序
nop //无作用,英文"no operation"的简写,意思是"do nothing"(机器码90) (解释:ultraedit打开编辑exe文件时看到90,等同于汇编语句nop)
call //调用子程序,子程序以ret结尾
je 或jz //若相等则跳(机器码74 或0F84)
jne或jnz //若不相等则跳(机器码75或0F85)
jmp //无条件跳(机器码EB)
jb //若小于则跳
ja //若大于则跳
jg //若大于则跳
jge //若大于等于则跳
jl //若小于则跳
jle //若小于等于则跳
pop xx //xx出栈
push xx //xx压栈
更为详细的指令请查阅汇编书籍。
我知道的破解好像就这些了吧,简要的说了下.破解是编程的逆命题,学习点对编程是有好处的.但是建议还是不要到处破,现在中国的法律对网络还不是很完善,以后肯定会有规定的,毕竟软件作者也不容易,他的权益是要被保护的,不过有些作者软件价格是有点过了,呵呵~~~破解学是可以学的,任何知识学会了绝对是没有坏处的.会了,要用什么注册软件,破掉它在自己的电脑上偷偷用用,我想应该不会有人会说什么的吧?呵呵~~~

       这是我很久以前发表的一篇文章......

             论坛服务器转移后,数据就遗失了......

       到非凡论坛看到这,转过来 ,呵呵~~~
                                                                              www.hjzfy.com
                                                                                 2010.2.23

TOP

发新话题