

学习破解的三个阶段
基本操作,修改程序,使用ultraedit等工具修改exe文件,称为蛮力破解,简称爆破
中级,追逐该软件的注册码
高级,写出注册机
首先谈谈这场爆炸. 所谓爆破是指修改可执行文件的源文件以达到相应的目的. 你不明白?哈哈,让我们举个例子. 例如,共享软件要求用户输入注册码. 如果用户输入,它等于由用户名(或其他名称)计算出的注册码(即用户输入的注册码正确),那么它将跳至注册成功的地方,否则它将跳到错误的位置.
了解一下,我们只需要找到此跳转指令并将其修改为所需的“形状”,就可以做我们想做的一切? (一种软件将他的手放在胸前,你在做什么?

)
有两种常见的修改方法. 我给你举个例子:
1号
在软件中,这样注册:
00451239 CALL 00405E02(键CALL,用于判断用户输入的注册码是否正确)

0045123D JZ 004572E6(!!! <-这是键跳转,如果用户输入的注册码正确,则跳转到成功位置,即004572E6)
0045XXXX YYYYYYYYYY
XXXXXXXX YYYYYYYYYY
XXXXXXXX YYYYYYYYYY
在此处执行XXXXXXXX时,它提示用户无法注册
...提示用户注册码不正确以及其他相关信息
...
004572E6 ... <-(注册成功!!!)
...提示用户成功注册和其他相关信息
哦,你懂吗?如果没有,让我告诉你.
当软件执行到00451239时,CALL设置为0045E02来判断注册码. 然后返回一个跳转语句,即,如果用户输入了正确的注册码,则即使注册成功,也要跳转到004572E6,跳转到此处. 如果用户输入的注册码不正确,它将不会跳到0045123D,而是会继续执行. 下面等待的是注册失败部分.
您想了解吗?嘿...是的,我们只需要将跳键JZ更改为JNZ(如果用户输入了错误的注册码,则注册成功,如果输入正确,则注册失败). 当然,您也可以将JNZ更改为Jmp. 在这种情况下,您输入的注册码是否正确. 可以成功注册.
2号

让我们谈谈另一种情况:
00451239 CALL 00405E02(键CALL,用于判断用户输入的注册码是否正确)
0045123D JNZ 004572E6(!!! <-这是键跳转. 如果用户输入的注册码不正确,它将跳转到故障点004572E6)
0045XXXX YYYYYYYYYY
XXXXXXXX YYYYYYYYYY
XXXXXXXX YYYYYYYYYY
此处执行XXXXXXXX怎么给apk软件加激活码,它将提示用户成功注册
...提示用户成功注册和其他相关信息
...
004572E6 ... <-(注册失败!!!)
...提示用户注册码不正确以及其他相关信息
我相信这次,并且相信它. 你一定要明白我还是不明白...下来...
您必须看到与第一种情况的区别. 那就对了!它与第一个不同. 第一种情况是,如果注册码正确,它将跳至成功注册怎么给apk软件加激活码,例如

如果它没有跳开,它将执行到故障点. 在这种情况下,如果注册码不正确,则会跳转到注册失败,否则将执行到注册成功.
在这种情况下,除了将JNZ更改为JZ外,还可以将其更改为Nop. Nop命令没有任何意义. 将命令修改为Nop后,您可以输入注册代码以注册Too.
向您解释了该原理,让我们讨论一下具体的修改方法. (我假设您了解如何使用我说的工具)
首先讨论虚拟地址和偏移量转换的问题. 在SoftICE和W32Dasm下显示的地址值是所谓的内存地址(memoryoffset)或虚拟地址(Virual Address,VA). 在十六进制工具(例如Hiew,HexWorkshop等)中,显示的地址是文件地址,称为文件偏移量或物理地址(RAWoffset).
因此,当我们想通过那些十六进制工具修改可执行文件中的相应指令时,必须首先找到其Fileoffset. 我们不需要使用那些特殊的转换工具. W32Dasm中提供此功能. 例如,如果您来到W32Dasm中的0045123D,则指令的虚拟地址和偏移地址将出现在W32Dasm界面下方的状态栏中. ,即@: 0045123D @ offset后面的0005063Dh是0005063Dh. 获取地址后,我们可以使用Hex工具(例如UltraEdit)修改可执行文件. 例如,使用UltraEdit,首先使用UltraEdit打开可执行文件,然后按Ctrl + G,然后输入获得的偏移地址,即可得到其对应的机器代码.
再次告诉我有关机器代码的信息,即所谓的机器代码. 它是您看到的十六进制数据. 您还记得它们与组装说明一一对应吗?
在喷砂期间使用以下物品. 如果您对其他人感兴趣,可以自己检查相关信息:
JZ = 74; JNZ = 75; JMP = EB; Nop = 90
喷砂时,只需相应地修改以上机器代码. 例如,在第一种情况下,您可以将74更改为EB,即将JZ更改为JMP. 在第二种情况下,必须将75更改为90,即将JNZ更改为Nop.
由于本文仅讨论原理,因此更加具体. 如何找到键跳转等,我们将在后面讨论.
上面介绍了爆破原理,您需要了解的是. 爆破仅仅是您研究Crack的开始,它是一种非常简单的方法. 您可以在刚开始时就玩,但是希望您不要在这里停留!
(嘿,让我们来谈谈. 并不是所有的内容都在软件中说了,并且不允许对其进行反向修改. 如果您移动他人的身体,怎么不能购买该帐户?)
我什至不喜欢爆炸. 如果找不到注册码,我找不到. 否则,我将不会注册该软件. 由于我不想付款,因此我必须依靠自己的技能. (等我以后有钱时,我会考虑注册那些出色的共享软件). 因此,从某种意义上说,我是一位绅士.

实际上,找到注册代码并不难. 我的意思是,当您针对的软件不相同时,您不必担心.
爆炸时我们只是提到按键电话吗?通常,此键CALL用于比较两个注册码(一个是由软件本身根据您的注册名或机器计算出的正确注册码,另一个是您输入的错误注册码). 如前所述,在CALL之前,通常将使用的数据放在一个位置. 使用CALL时,将从这些位置取出先前放入的数据并进行相应的处理. 此键调用也是如此. 通话之前,通常将这两个注册码放在堆栈或寄存器中. 嘿,我们只需要进入调试器中的CALL,并使用CALL之前的说明来判断输入之前正确和不正确的注册码在哪里. 然后使用相应的命令进行查看,我说这并不困难.
以下列出了两种最常见的情况(请参阅相关教程):
1号
mov eax []可以是地址或其他寄存器
mov edx []与上面相同,该指令也可以弹出edx
测试eax eax
jz(jnz)或jne(je)键跳转
了解,在按下CALL键之前,软件会将两个注册码放入eax和edx中,您只需在CALL下进行deax或dedx即可查看正确的注册码.
2号
moveax []可以是地址或其他寄存器
mov edx []与上面相同,该指令也可以弹出edx
jne(je)键跳转
以上两种情况是最常见的,在这里将不提及那些较不常见的情况. 下次,我将告诉您相关的方法...
此处是有关查找软件注册码的部分. 下次我们将讨论具体内容. (你不说吗?我可以在佛经中收到你的砖头,为什么我要把它们扔掉?)
最后,如果您相信自己,那么我们来谈谈最后一个所谓的高级阶段. 并且爱Crack,那么您肯定会进入这个阶段,但是时间因人而异.
实际上,分析软件算法中有很多技术. 哈哈,至少当我开始时,我无法弄清楚. 这么多的CALL,每个呼叫看起来都很重要,我必须再次追逐它吗?结果,追逐了许多API. 在您真正地分析了软件的算法并编写了注册机之后. 您将了解真相.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-236729-1.html
向市场进军