好友
阅读权限40
听众
最后登录1970-1-1
|
yyhd
发表于 2021-9-25 15:20
本帖最后由 yyhd 于 2021-10-16 00:35 编辑
各位吾爱的朋友,大家好!
真的好久没有和大家见面了,说实在的,还是蛮想大家的!
去年春节之际,我连续十几天写了一套教程《玩玩破解》共24集,虽说是没有什么技术含量,但是从大家的反馈来看,还是对很多新人有所帮助的,我也就非常满意了。
因为我一直也属于新人行列,所以也写不出什么高水平的东西,只是能把自己的学习收获更通俗易懂的和大家一起分享而已。今天刚巧有些心情,就和大家再闲聊几句。
一、破解的关键是什么?
我个人认为,破解的关键就是找到最恰当的断点。水平的高低也就在于谁能在最快的时间找到最有价值的断点。
什么是断点?
就是破解者人为地让程序在执行过程中暂时停下来(也叫断下来)的那个代码地址。
要找到断点,就要涉及到一个工具和一些技术。工具通常就是OD,OD这个软件的作用就是能够让软件以汇编的形式呈现,如果你能看懂汇编语言,你就能够看懂这个软件的编程流程了。
所以,破解者不仅要会使用OD这个工具,还要会一些汇编知识。
好在,要求不高,难度不大,你基本上一个小时就可以学会。
OD还有一个重要的作用,就是你可以在某个地址下断点,当软件执行到这句代码的时候就会自动断下来,这就是上面说的断点。
但是问题来了,一个软件的编写有成千上万条代码,你到底该在那一句代码处下断点呢?
呵呵,如何有效的下断点,就是我们学破解的最关键的技术。
相信你会听说过中文搜索关键字、API函数、消息函数、F12暂停法、按钮事件等等方法,其实这些方法的目的都是一样的,就是下断点。
那你可能要问了,什么叫做最有价值的断点?所谓最有价值的断点,就是距离软件验证真假的最近的位置。
我举个例子,比如有一个软件需要你输入用户名和密码进行验证,如果正确就提示登录成功,错误提示登录失败。那么,我们该如何下断点呢?
第一种方法:在软件读取我们输入的假的用户名和密码的代码处下断,我们也叫做验证前下断。怎么下断呢?如果软件不是重启验证的,你对读取输入框的API函数进行下断就可以了。
附带说一句,我们的软件在编写时会大量使用WINDOWS系统库里的API函数来实现功能,包括弹窗、读取文本、写入文本、比较真假码等等。
所以,你要熟悉一些基本的API函数的功能。如果软件是重启验证的,你对读取文件、注册表的API函数下断就可以了。
附带说一句,所谓重启验证,就是你只需要第一次属于注册码,以后启动软件的时候就不需要再次输入了,软件会自动读取你之前输入的注册码信息然后进行验证。
第二种方法:在软件进行真假码比较的时候下断,我们也叫做验证中下断,这个断点就NB了,也就是最有价值了,因为如果软件编写者没有对数据进行加密的话,你会直接看到真码。
那怎么下断呢?你可能会想到用有比较功能的API函数或者命令。
呵呵,事实求是说,因为软件的程序中有大量的比较命令,你很难找准,所以这个方法很少用。当然,易语言除外,因为它有一个特殊的文本比较通杀命令 test edx,3。
第三种方法:在软件进行错误提示的时候下断,我们也叫做验证后下断,这个断点是最常用的,也是非常有效的。
那么哪些是错误提示的,比如出现“登录失败”这样的文字、出现一个错误提示的对话框、出现一个提示需要缴费的窗口等,那么当你看到这些错误提示的时候,你该如何下断呢?
比如出现文字,你就可以用搜索字符串的方法,当然要注意的是,你可能什么也搜不到?
原因一般有两个:
一是你没有在程序领空搜索,最简单的解决办法是你先在OD里用CTRL+G命令输入401000后,再搜索。
二是软件的作者对字符串进行了加密处理,你暂时没有办法了。比如出现提示的对话框或者窗口,你就可以使用API函数下断。
当然,我个人还特别喜欢用设置窗口标题的API函数SetWindowText,往往会给你在黑暗中带来惊喜。
二、壳是什么?
壳就是软件的防护服。我们这么说吧,软件作者写好了程序,但是怕别人分析破解他的程序代码,就在原有的程序上加了一个防护服就是壳。
所以,壳的作用就是保护软件,它本身没有软件的功能,所以壳是没有必要破解的,你需要的最多就是脱壳,或者就是绕过壳即可。当然,现在的壳也很厉害,比如VM的壳,它的作用是让软件原有的代码在OD里面变的杂乱无章,令你无从下手。
但是,也别太失望。因为当绝大多数加了壳的软件运行起来后,它在OD里面会自动解码,源代码又恢复正常了。
所以,当你遇到有壳的程序,不用费力的必须先脱壳,你可以在OD里面先把软件运行起来,然后到程序领空(大部分是401000处),然后你再用常规的办法(搜字符串、API断点)来分析下断点。另外需要注意的是,对于有壳的程序,你修改了源代码后是无法保存的,你需要做个内存补丁,其实也很简单,有专门的工具。
三、还要注意什么?
当你看完了以上两点,你觉得你能破解软件了吗?呵呵,还差一点。就是反反调试技术。
现在的软件作者都很聪明,他们也有一些反破解的技术,他们除了加壳以外,还会增加一些反调试的技术来对付你,
比如他会写一段代码专门检测你是否正在使用OD这个工具,发现了,就直接让软件退出。
比如他会写一段代码专门检测你是否修改了源程序,发现了,就直接蓝屏。比如他会写一段代码专门检测你是否跳过了注册窗口,发现了,就直接格盘。
那怎么办?很简单,好好学习,多练,攻防的技术是没有止境的!
随口说了以上几点看法,希望给新手一点启发。
补充说明一下:
1、真想学破解,建议先在自己的电脑上安装一个虚拟机,在虚拟机上进行破解练习,尤其是想练手一些商业软件,避免被格盘、蓝屏、安装木马等,别怨软件作者,毕竟是你在别人没有同意的情况下动了人家的身子,算是惩罚。
2、以上说的是所有软件的通用破解方法,但是对于不同语言编写的软件还有破解的不同捷径,所以你还要学习一下不同语言的破解小妙招。
对于易语言程序,可以使用文本比较通杀命令(test edx,3)、窗口置换(push 10001)、按钮事件(FF55FC5F5E)、易语言分析插件(E-Debug.dll、EWND.dll)等方法。
对于DELPHI程序,可以使用按钮事件特征码(740E8BD38B83????????FF93????????)、DarkDe分析工具。
对于VB程序,可以使用按钮事件特征码(816C24)、VBDecompiler分析工具。当然VB的API函数有特殊的书写方式,比如弹出对话框,用的命令是rtcMsgBox,而不是其他语言常用的MessageBox。所以对于VB的程序要注意API函数的特殊性。
对于VC程序,可以使用按钮事件特征码(sub eax,0a),要注意的是和MFC编写的程序有点区别。
3、如果你学了一段时间后,发现还是有很多软件破不了,千万别灰心,因为太正常了,要记住编写软件的作者也不是笨蛋,尤其是商业软件,一定是陷阱重重的,如果一个破解新手都能轻易破解了,人家还混个啥?
所以说学习是无止境的。你在学习如何破解软件,人家也在学习如何防破解软件,乐趣就在于相互之间的不断对抗和技术提升。
再多说一句话,“学习逆向破解的目的不是黑别人的软件,而是要提升软件的保护能力”。
如果您觉得我发的内容确实对您有所帮助,请麻烦您支持一个热心值,进行精神鼓励,也是我继续写下去的动力!
玩玩破解,写给新人看(第一集)
玩玩破解,写给新人看(第二集)
玩玩破解,写给新人看(第三集)
玩玩破解,写给新人看(第四集)
玩玩破解,写个新人看(第五集)
玩玩破解,写给新人看(第六集)
玩玩破解,写给新人看(第七集)
玩玩破解,写给新人看(第八集)
玩玩破解,写给新人看(第九集)
玩玩破解,写给新人看(第十集)
玩玩破解,写给新人看(第十一集)
玩玩破解,写给新人看(第十二集)
玩玩破解,写给新人看(阶段练习1)
玩玩破解,写给新人看(第十三集)
玩玩破解,写给新人看(第十四集)
玩玩破解,写给新人看(第十五集)
玩玩破解,写给新人看(第十六集)
玩玩破解,写给新人看(第十七集)
玩玩破解,写给新人看(第十八集)
玩玩破解,写给新人看(第十九集)
玩玩破解,写给新人看(第二十集)
玩玩破解,写给新人看(第二十一集)
玩玩破解,写给新人看(第二十二集)
玩玩破解,写给新人看(第二十三集)
玩玩破解,写给新人看(第二十四集)
闲谈如何破解软件?
玩玩破解——小白实战1,你也行!
玩玩破解——小白实战2,巧搜字符串
玩玩破解——小白实战3,易语言字符串比较通杀
玩玩破解——小白实战4,冰火两重天
对新人们学习《玩玩破解》系列教程的集中解答
玩玩破解—加点油,再前行!
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|