在安装软件的时候,会发现有许多的软件都使用了一机一码的授权,显示了机器码,还有授权码,一般这些软件都有一些共同特点,那就是机器码会显示出来,而授权码是要填进去的,填进去了以后再点击确定,如果正确,就能正常的进入软件,如果错误,可能会提示不正确然后退出,或者直接退出。授权码一般是由软件的开发者进行发放,但是如果通过软件里提示的信息找不到开发者又或者没有开发者的联系方式,这个软件的授权码就无法获取了,那么该如何在这样的情况下获取到正确的授权码呢,最快捷的方法就是使用内存搜索。
注意:本教程只适合不加壳的exe软件,加过壳的exe软件可能会搜索不到,32位程序或者64位程序都可以用,但是要注意,32位程序要用X32DBG,64位程序用X64DBG。还有最重要的一点,有些软件检测到调试器会给电脑发送蓝屏指令或者格式化C盘指令,能直接摧毁电脑,跟病毒一样......,所以最好在虚拟机当中运行。
我们来看一下这款软件:
打开以后提示一个红叉叉。。。。。。
点击确定后出现验证界面
提示是要填写授权码,然后点击注册才行,这时候先打开X64DBG,用管理员方式运行,最好把调试软件X64DBG名称改掉,换一个英文或者数字的名称,作用是防止被检测到。
接下来点击文件
选择需要调试的软件(软件需要打开),点击附加
做完这一步之后回到软件页面里,随便输入一串授权码,随便打,尽量不要有规律,我这边输入了182930453
好了,点击注册,这一步的目的是让软件进行验证,判断输入的授权码与正确授权码是否一致
可以看到提示:无效授权码,说明验证已经完成了
这个时候就说明已经比对完成了,那么比对是在哪里进行的呢,是在内存当中进行的,我们这个时候就需要把正确的授权码从内存当中挖出来。
回到X64DBG,点击内存布局,在里面按下右键,点击搜索匹配特征
接着按图上箭头指示来操作,再把我们在软件验证界面输入的错误的授权码给输入进去,这一步的目的是找出错误授权码的位置,并从附近寻找正确授权码,把两串数值进行比对时,往往都要拿到一块去比对,所以按照这个道理来找的话大概率就能找的到了。
诶?居然什么也没找到?不要慌,说不定是语言的问题,字符串的编码是有格式的,就像这个世界上有中文,英文,日文,德文,法文等语言一样,我们点击代码页,把UTF-8改成UTF-16试试看
果然,找到了这么几个关键的地方,这些都是假授权码在内存当中的位置
我们选中最上面的,右键,在内存窗口中转到
这里就是假验证码的其中一个位置,往上翻翻,诶,好像发现了一些提示框的信息,再往上翻翻,没啥东西了,往下看看呢,也没啥东西,那么就点击下一个看看吧
然后发现也是一样的,这是因为这两个地址的位置很相近
看看这才隔了多少啊
接下来看第三个地方,往上翻翻,这次看到一个很像授权码的东西
先用记事本记录下来,然后输入软件里面点击注册
看来是真授权码了,仔细看了一眼好像也就那么回事,只是给原来的机器码字母数字打乱了就变成了授权码,B变成了E,F变成了M,E变成了K,0变3,8变1,6不变,D变I,1变5,5变4,2变7,这样软件就可以正常使用了。