闲谈如何破解软件?

admin 2022年10月15日14:21:57评论43 views字数 2751阅读9分10秒阅读模式

 一、破解的关键是什么?

  我个人认为,破解的关键就是找到最恰当的断点。水平的高低也就在于谁能在最快的时间找到最有价值的断点。

  什么是断点?

  就是破解者人为地让程序在执行过程中暂时停下来(也叫断下来)的那个代码地址。

  要找到断点,就要涉及到一个工具和一些技术。工具通常就是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、如果你学了一段时间后,发现还是有很多软件破不了,千万别灰心,因为太正常了,要记住编写软件的作者也不是笨蛋,尤其是商业软件,一定是陷阱重重的,如果一个破解新手都能轻易破解了,人家还混个啥?

  所以说学习是无止境的。你在学习如何破解软件,人家也在学习如何防破解软件,乐趣就在于相互之间的不断对抗和技术提升。

  

  再多说一句话,“学习逆向破解的目的不是黑别人的软件,而是要提升软件的保护能力”。

原文始发于微信公众号(黑客网络安全):闲谈如何破解软件?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月15日14:21:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   闲谈如何破解软件?http://cn-sec.com/archives/1350769.html

发表评论

匿名网友 填写信息