yyhd 发表于 2021-1-26 11:59

玩玩破解,给新人看(第三集)

本帖最后由 yyhd 于 2021-10-16 00:17 编辑

第五课 一起打倒阻碍新手的“拦路虎”

在讲课之前,首先要感谢朋友们对我的前两集教程的支持和鼓励,如果说你看了我讲的内容以后真的弄明白了一些在破解学习中的困惑,真的感觉对您有所帮助,我会感到非常欣慰,因为这就是我的初衷。我经历了和你们一样的彷徨、困惑、无助和烦恼,虽然网上可以查阅很多知识和教程,但是总是听不明白、学不下去,还是这样的一句话,不是您的问题,是老师的问题,他们肚里有货,但是不擅于表达,不知道该如何解决新人的真正困惑。我再次声明,我不是什么大神,水平很有限,但是我对自己讲课还是有一定信心的,因为我的长处就是能够把事情说明白,有条理,让朋友们一听就懂,一学就会。回顾前两集共四课的内容,就是讲了三件事情,一是破解的工具,就是所谓的三兄弟,PEID、DIE64、OD;二是破解的常用步骤,步骤就是三兄弟轮流上,查壳、查编写语言、OD分析代码;三是破解的思路,就是从验证后的结果做为突破口,反查验证中的关键代码位置。好了,我们开始进入第五课。今天要解决的是大家在学习过程中容易困惑的问题,这些问题不解决掉,会严重影响你学习兴趣和快乐心情。在此,我列出了五只老虎,今天我们一起玩玩打第一只老虎,HAPPY一下。

NO1:OD有什么用处?

我们之前说过,OD是老三,作用就是分析程序的代码。分析程序的什么代码呢?分析的是程序的汇编代码。那么汇编是什么呢?汇编是编程的一种语言。即使您没有学过编程,我相信你也听说过C语言、易语言等等,这两个也是编程语言。我们编程序让计算机执行,当然要把代码写出来,就像你和他人交流,你可以说汉语,说英文,说法文,这些都是语言。计算机能够听懂的语言有很多,常用的有汇编、C、VC、VB、DELPHI、JAVA、PHTHON、易语言等等。我们遇到的需要破解的软件大多是VC、VB、DELPHI、易语言编写的,其中外挂主要是易语言编写的。你可能会问,那我们破解是不是分析的就是软件的源代码,换句话就是,我们分析的就是别人写软件的代码,是不是这样?呵呵,如果真的能够看到别人的编写源代码,那破解就太容易了。遗憾的是,在当前的现实下,我们没有什么工具能够直接看到一个软件的源代码,那怎么办?有一个办法,就是我们有一个工具可以看到任何语言编写的软件的汇编代码,这个工具就是OD。明白了吗?OD中显示的是程序的汇编代码,不是源代码。因为汇编代码和源代码都能显示出程序的编写流程,所以我们退而求其次就通过分析汇编代码来模拟分析源代码。我们用OD打开一个程序,截图如下:




红色方框内显示的就是程序的一段汇编代码,每一行是一个语句。你刚开始肯定看不懂,然后有人告诉你,你必须先去学习汇编,然后再来学破解,结果你一去学汇编,发现枯燥难懂,你就放弃了破解,非常可惜。其实不用刻意去学汇编,我们新手刚入门,只要明白三个汇编的指令就可以了。

第一个是CALL指令。你看红色方框内有三个“CALL”指令,当你看到CALL语句,你只要明白CALL是子程序的入口,虽然在OD里目前看着是一条语句,如果你进入CALL的大门,里面有很多语句,我们可以把OD里看到的汇编语句看成是你的家,每个CALL就是你家里卧室、卫生间、厨房等小房间的大门,现在是关着的,你要想看卧室,你就必须打开门,进入CALL,怎么能进去呢,就是在OD里当指令执行到这个CALL的这一行语句时,用键盘上的F7就进去了。如果现在指令没有执行到CALL语句,你只是想看看CALL里面有什么?你可以把鼠标点到这一行,然后按回车键就可以进去浏览了。

第二个是JNZ、JMP指令,他们叫做跳转指令,我们以前说过,程序不是按顺序一行一行往下执行的,会根据条件跳到不同的代码位置,跳转指令就是让代码能够跳来跳去的指令。跳转指令分为两种,一种是JMP,是无条件跳转,意思就是当代码执行到JMP语句,是无条件执行跳转的,跳到哪?就是跳到JMP后面的代码地址。另外一种是JZ、JNZ等,是有条件跳转,意思就是当代码执行到JZ、JNZ时,跳还是不跳要根据上面代码得到的结果来判断,我们可以联系一下以前的知识,我们先定位验证后的结果代码位置,然后反查看上面代码是否有一个跳转可以跳过关键字符串,然后就可以向上定位关键验证位置,所以,JZ、JNZ这些条件跳转指令是我们破解的关键点,所以我们在破解时最需要留意的就是看这些条件跳转,一般而言,如果在关键代码处附近出现一个大的有条件跳转指令就很可疑。最常见的就是这样的,JE是一个条件跳转,它跳到了一个JMP下面一行,这是典型的条件判断编程语法。



第三个是EAX,它叫做EAX寄存器,为什么要关注它呢?看下图:



红色箭头指的位置有一个EAX,上面有一个CALL,我们已经知道了CALL是一个子程序,里面有多行语句,子程序的作用就是实现一个功能,你可以这样理解,执行一个CALL就相当于执行一个任务,任务完成以后的结果就放在EAX里面,所以在CALL下面很近的EAX里面存放的就是CALL执行的结果。那么这个结果对于破解有什么意义呢?如果我们编程人员把某个CALL做为验证的子程序,这个CALL的作用就是进行真假码的比较,如果比较的结果是真,那么就返回数值1,如果结果是假,就返回数值0,那么返回值1或者0就放在EAX里面,然后下面的条件跳转命令JZ、JNZ就根据是1还是0这个结果来决定跳还是不跳,明白了吗?EAX的意义就在于此,它里面存放的数值会决定程序以后的执行流程。那我们知道了EAX的意义又有什么用呢?你可以修改EAX的值,比如把0改成1就行了,在哪改呢?在CALL里面的代码的开头改成MOV EAX,1 ,下一句改成RETN。这样改的好处是什么呢?因为很多程序在验证的时候会在程序执行过程中多次进行验证,每次验证后都会有条件跳转指令,与其你改多个条件跳转指令,不如改一个验证CALL的返回值更省事。
一些朋友想练手,我在附件里上传三个练习软件,你用我讲的方法练练手,玩一玩,你的信心来自于你的成功!
第一个软件是没加壳的。第二个是加了壳的。第三个是多次调用同一个验证CALL。你可以在破解第三个软件的时候进入验证CALL,找到正确的密码。
如果您觉得我发的内容确实对您有所帮助,请麻烦您支持一个热心值,进行精神鼓励,也是我继续写下去的动力!

玩玩破解,写给新人看(第一集)
玩玩破解,写给新人看(第二集)
玩玩破解,写给新人看(第三集)
玩玩破解,写给新人看(第四集)
玩玩破解,写个新人看(第五集)
玩玩破解,写给新人看(第六集)
玩玩破解,写给新人看(第七集)
玩玩破解,写给新人看(第八集)
玩玩破解,写给新人看(第九集)
玩玩破解,写给新人看(第十集)
玩玩破解,写给新人看(第十一集)
玩玩破解,写给新人看(第十二集)
玩玩破解,写给新人看(阶段练习1)
玩玩破解,写给新人看(第十三集)
玩玩破解,写给新人看(第十四集)
玩玩破解,写给新人看(第十五集)
玩玩破解,写给新人看(第十六集)
玩玩破解,写给新人看(第十七集)
玩玩破解,写给新人看(第十八集)
玩玩破解,写给新人看(第十九集)
玩玩破解,写给新人看(第二十集)
玩玩破解,写给新人看(第二十一集)
玩玩破解,写给新人看(第二十二集)
玩玩破解,写给新人看(第二十三集)
玩玩破解,写给新人看(第二十四集)
闲谈如何破解软件?
玩玩破解——小白实战1,你也行!
玩玩破解——小白实战2,巧搜字符串
玩玩破解——小白实战3,易语言字符串比较通杀
玩玩破解——小白实战4,冰火两重天
对新人们学习《玩玩破解》系列教程的集中解答
玩玩破解—加点油,再前行!

ちょうかい 发表于 2021-1-26 23:02

本帖最后由 ちょうかい 于 2021-1-26 23:04 编辑

交作业
1.第一个练习
od打开CM1(无壳).exe

然后右键找到-->中文搜索引擎-->智能搜索

然后找到:恭喜你,破解成功了(ctrl+f搜索)-->双击进去

然后发现破解成功上面有跳转,用nop填充

然后运行,破解成功

1.第二个练习(加壳)
我的办法是这样的下把软件跑一边。然后用附加的方法就行了,翻遍论坛找的。
先运行    -->CM1(加壳).exe   ---->用od附加-----crtl+g搜索00401000

然后正常破解就行了
1.第三个练习
我真的我只找到跳转然后用nop填充的方法
改验证call研究了半天也没改出来希望有大佬能给个作业抄抄。
今天收获满满,希望明天起床能看到大佬分享下第三个练习的做法

pipiji233 发表于 2021-3-17 11:19

第一个练习CM1(无壳)
我们首先将软件拖入OD中并运行,然后在登入框中随便输入账号密码。

程序出现了弹窗,提示我们登入失败。
ps:要是你一下就输入正确直接去买彩票好了。
但是这也许就是我们的一个突破口。
于是我尝试进行搜索这个关键词汇。



果不其然,发现了这个关键词,不仅如此,似乎还有着意外的收获。发现了一窜奇怪的字符。难道是账号密码?
账号:yyhd
密码:521314

那我们有了账号密码要不要试试?

ohhh,竟然成功了。

不过我们难道成功就能停止了吗?当然不能。

接下来跳到破解成功看看。

发现上面有个je跳转,跟上去看看。

可分析出账号密码不对则会跳过破解成功。
现在有以下解决方法
1.nop掉je,只要他没了跳转就会继续执行到成功
2.将je改成jne 既然他要密码正确才能跳转,那我们把他改为密码错误也能跳转就好了。

为了后续的破解我在跳转上一步下个断点。然后将其nop掉后随意输入账号密码试试。

成功。

但是破解就那么结束了吗?NONONO
怎么能那么简单,我们要学会举一反三,尝试多种玩法。

那要是我们什么都不输入直接点登入会怎么样?

提示了请输入账号和密码。
有了之前的经验我们直接进行字符串搜索。
成功的定位到了这个字符串。
和之前一样,发现上面有个跳转,跟上去看看。

根据经验可得这个跳转经过判断是否输入账号密码并是否弹出对话框。
可能有人会想,之前那个je跳转可以nop掉,那这个是不是也可以?
有想法就需要实践。

哦豁,nop掉后仍然需要我们输入账号密码。
为什么呢?
因为他判断我们输入了账号密码后会跳到下一段认证,而我们nop掉这个判断跳转就一路执行下去,而在这执行过程中程序执行到了弹出输入账号密码的对话框。
那我该怎么办?
别急,竟然他需要判断我们是否输入才能跳到下一段,那我们直接让他省下判断的过程直接跳到下一段不就好了吗。
我们可以使用jmp无条件跳转直接执行下一段。

就像这样,点击登入。

会发现他跳转到了我们之前下的断点上。F8向下走一步看看。

成功,这样我们就完成了无账号密码登入。
我们要学会举一反三。试试另一种方法。

通过前面的分析我们已经知道了00401255需要nop掉才能向下继续执行。
那我们可不可以点击登入直接跳转到他的下一步?
通过左侧的地址栏可看到00401255下一步是0040125B
那么我们直接将空密码登入直接修改为跳到0040125B


成功!

jiemo365 发表于 2021-1-26 14:08

大佬:1.脱壳能说说么?2.call里面写MOV EAX,1 ,和RETN应该怎么操作

mzpyzj 发表于 2021-1-27 17:54

ちょうかい 发表于 2021-1-26 23:02
交作业
1.第一个练习
od打开CM1(无壳).exe


如果是不修改比较跟跳转的话,那就修改call里面的内容。



傲雪冰释 发表于 2021-2-15 22:02

刚刚学到的知识点,分享一下,加壳的进入后要CTRL+G 搜索401000,然后在这里搜索字符串,为什么是这里呢,因为90%的软件加壳都是从这里来解,那剩余部分就得知识更多时候再了解啦。

沉心云 发表于 2021-1-27 17:07

第三个作业不是跳转然后用nop填充的方法,在恭喜你已打开前面那个jnz直接Nop就行了么,为什么你们说的那么复杂

yeqiang163 发表于 2021-1-27 12:25

ちょうかい 发表于 2021-1-26 23:02
交作业
1.第一个练习
od打开CM1(无壳).exe

我就补充第三个练习吧一张图

ちょうかい 发表于 2021-1-27 09:06

孤村一点白 发表于 2021-1-26 23:42
大佬第2个带壳的我按你的方式到了je改nop那步,但是改完按之前无壳那样复制到可执行文件显示找不到然后弹 ...

我也么保存,不知道咋办。不过有个曲线救国的方式用xh补丁制作工具就行了xh补丁制作工具论坛搜一下。
我也是小白这几天在学od,无奈找的找不到什么好课程。现在学的还是pdd买的,然后好多地方晦涩难懂突然看到论坛的帖子写的真的好。

abcing 发表于 2021-1-26 17:48

mzpyzj 发表于 2021-1-26 16:13

失去紫的蓝 发表于 2021-1-26 15:09
在CALL里面的代码的开头改成MOV EAX,1 ,下一句改成RETN。这样改的好处是什么呢?因为很多程序在验证的时候 ...

意思就是说这个关键call里面执行到最后面会返回一个值(真或假),比如这个返回值是真的时候,程序就会实现VIP功能,返回值为假的时候,程序就会提示你无权限,所以这个值就是用来影响后面跳转的关键。而楼主说意思是进去这个关键call里面修改内容,不让它往下去判断这个返回值是真或者假,而知直接进call里面赋予EAX一个真或者假的命令,然后第二行修改为RETN的意思就是返回上一层(就是不再往下面执行命令了)。直接修改call返回值是应为现在的软件大部分都是多层调用这个关键CALL来判断你是否有对应的权限,而你直接修改这个返回值就省事很多,不然功能特别多的软件你要一处一处去修改跳转,效率也慢。

小图 发表于 2021-1-26 12:02

收听了,期待继续。谢谢分享

Pau250 发表于 2021-1-26 12:03

占个沙发

13317626661 发表于 2021-1-26 12:03

感谢大神继续教程!专心学习中。。。。

米饭大师 发表于 2021-1-26 12:04

感谢大佬分享

尚未起名 发表于 2021-1-26 12:12

谢谢,受教了!不过没有od知识还是看不懂

adscrx1 发表于 2021-1-26 12:28

学习了 感谢

TONGSHI2020 发表于 2021-1-26 12:28

那请问!那种插件、ps插件!用什么软件打开重新编辑插件呢?求教!

johnsonqiao 发表于 2021-1-26 12:35

学习了,感谢大佬分享!

听雷打过 发表于 2021-1-26 12:39

看出来,是个高手{:1_927:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 玩玩破解,给新人看(第三集)