乖丶KOKO 发表于 2016-1-21 18:39

简单破解第一课(基础篇)

本帖最后由 乖丶KOKO 于 2016-1-21 18:48 编辑

第一部分:简介
软件MD5: 62ee36fbd5eab7edb50c3ff621a81185
编写语言:易语言5.41正式版
编写系统:Windows XP





易语言误报还是挺高的,杀毒结果摆在这里了,如果不相信可以不下载课件。



第二部分:爆破简单程序
咱们先来了解一下程序

输入启动密码后点验证,如果正确,就弹出验证成功的窗口

如果错误就弹出对话框“验证失败”

我们要做的就是找到这个信息框然后让他跳过失败,走向成功
怎么做呢?我们要用到高端大气上档次的OD
可以说OD是逆向程序最流行的反汇编程序

那么,咱们来熟悉一下OD
我们把程序拖到OD里
我用的是PYG的OD,网上还有还多类型的OD,每一款OD都有一些独特的功能,大家可以根据自己的喜好选择不同的OD。
因为是第一课,所以我们不了解太多,我们先来看一下反汇编窗口

我们修改程序的时候都是从反汇编窗口修改的,可以说是OD里最主要的部分

有的人可能会问,为什么不用ASCⅡ或UNICODE搜索呢?
其实都是可以的,只不过有一些区别。这两个只是编码类型,用ASCⅡ搜索,如果软件编码是UNICODE的话就搜不出想要的字符串,为了避免这种情况,我们用智能搜索。

我们把字符串窗口最大化,以便查看字符串
打开后是一堆我们不需要的字符串
还记得我们要找什么吗?
没错,就是那个“验证失败”
要在上百个字符串里找到他是不是很困难?
咱们可以用快捷键Ctrl+F来查找字符串


这里要说一下,咱们要尽可能的少输入字符,让OD筛选,比如说这个,你只需输入关键字“失败”就可以了,如果万一输入失误,比如说多了一个“.”那OD就找不到了,所以大家要避免麻烦。

回车之后OD已经帮咱们找到了这个字符串,细心的人可能会向上看一下,又发现了类似密码的东西

没错,这就是咱们要找的密码,不过咱们用更高科技的方法来把他干掉
我们双击“验证失败”这个字符串

OD自动跳到了对应的反汇编处
那么问题来了,怎么让他跳过呢?
嘿嘿,并不难
我们向上找跳转
可以这么理解,因为代码都是从上倒下以此运行的,所以关键的跳转一定在这段代码的上方
常见的跳转:
JMP:无条件跳转,就是运行到这里必须跳过去,不执行这一代码,这上面就有一个

可以看到,左边的红线一直指向00401196这个地址,所以他跳过了这个验证失败,那为什么咱们还可以看到这个提示呢?
那么真相只有一个,他上面还有一个跳转又跳过了这个JMP让程序走向了失败,我们再向上找
JE:相等跳转,顾名思义,通过比较后,相等就不跳,不想等就跳,不过控制他跳转与不跳转具体要看程序本身。


我们可以看到,如果这个跳转成立的话,他就会沿着左边的这条线跳到00401162这个地址,正好跳过了JMP走向了失败。如果不成立,程序就会向下走一直执行到JMP最终跳过失败。那么我们找到关键跳转就好办了,在OD里,想让这句代码失效只需做一点小小的改动
看我图片提示。

所谓用NOP填充就是让这句代码失效,也就是说NOP就空指令。

这样我们就成功让这句代码失效了
好了,我们已经成功爆破了这个小程序。
但是还没完,因为我做了小暗装,也就是二次效验。如果程序没有按照逻辑提示错误的信息框而是提示了成功,则程序就会自动关闭。
我们保存程序看一下



我们运行看看


然后程序完美退出,留下的只是一片蓝

那怎么让程序不退出呢?


第三部分:小软件的应用

逆向易语言程序呢,有一款小软件特别好用,就是E-Debug

我们可以用这款软件找到好多跟逆向有用的东西,大家自己摸索吧

在进程列表里选择要调试的易语言程序
选中之后点调试

他就进入了调试状态
我们回到程序,点击验证

E-Debug就显示出了在这个期间程序运行的流程

我们看到,最后运行的地方是403446,那么我们就可以断定让程序关闭的这段代码就在这里面,我们回到OD,重载程序,因为程序已经关闭了
按Ctrl+F2或者点击图片中所示的那个按钮

再次按F9运行程序
我们点上面的按钮,就是图片这里

在输入框这里输入刚刚程序最后执行的代码段头部地址403446


OD也跟着跳到了对应的代码段,我们按F2下断点
再次点击验证按钮,我们发现程序暂停了,那就证明我们成功断下了程序

我们让程序一步一步向下走,一次一次按F8
那横黄色的线就是现在程序运行的代码处

是一个可疑的JE跳转
刚刚我们说了NOP是空代码,JMP是必须跳转,那么就会有人想把JE改成JMP就可以让程序跳过去呢?
没错,答对了。把任何一个跳转的指令改成JMP都可以跳过所对应的代码
我们在这个JE跳转处按空格
把JE改成JMP

点汇编
(可能有人会问我,为什么要把JE改成JMP,你是怎么知道要把这里改成JMP的这类问题,我只能说,大家可以一直按F8让程序一直走下去,发现程序会关闭,但如果把这里改成JMP然后继续一直按F8让程序走下去,程序就不会关闭。因为以前用易语言5.1.1的版本编写就不会出现这种问题,一般走到CALL之后程序就会关闭,可能是因为新版的易语言加大了逆向的难度,是我没有考虑周全,希望大家谅解!我会找时间把程序进行修改然后给大家讲清楚为什么要改为JMP)
我们保存程序,打开之后,会发现程序不会自动关闭了



好了,教程就这么多,适合完全0基础的人学习
@Shark恒 希望恒大可以轻轻扫一下我写的东西,帮我更正一下里面的错误
如果帖子中有什么违规的地方请通知我更改,好吧各位管理大大(*^__^*) 嘻嘻
本文里用到的软件在恒大的工具包里均可以找到
**** Hidden Message *****




小雨么么哒 发表于 2016-1-21 18:47

沙发   请问楼猪这是干嘛的

乖丶KOKO 发表于 2016-1-21 18:49

小雨么么哒 发表于 2016-1-21 18:47
沙发   请问楼猪这是干嘛的

混个脸熟{:6_225:}

小雨么么哒 发表于 2016-1-21 18:50

乖丶KOKO 发表于 2016-1-21 18:49
混个脸熟

{:5_184:}当我没看见

乖丶KOKO 发表于 2016-1-21 18:52

小雨么么哒 发表于 2016-1-21 18:50
当我没看见

{:6_224:}你回来

小雨么么哒 发表于 2016-1-21 18:56

乖丶KOKO 发表于 2016-1-21 18:52
你回来

{:5_124:}咋滴啦????

叶良辰和赵总 发表于 2016-1-21 19:05

叶良辰和赵总 发表于 2016-1-21 19:08

寒冰丶 发表于 2016-1-21 19:08

我觉得可能这个对新手来说难了点。。。

Shark恒 发表于 2016-1-21 19:10

真心不错,讲的很细致,能看出亲爱的楼主是用心的在分享知识!
页: [1] 2 3 4 5
查看完整版本: 简单逆向第一课(基础篇)