算法分析题__入门黑客指南

算法分析题__入门黑客指南

首先从PEID的算法分析插件来介绍,要知道不管是在CTF竞赛的题目中,还是在实际的商业产品中,很多程序都喜欢使用成熟的标准算法来作为注册算法的一个部分,如MD5、等。这些算法本身往往就十分复杂和难以你理解,如果从反汇编指令来阅读这些算法则更是难上加难。对于标准算法,实际上我们并不需要知道这些算法的详细计算过程,我们只需要知道是哪一个算法即可,因为标准算法网上都能找到成熟的库文件或者源码等。

PEiD有一个叫做 的插件,使用这个插件可以对程序进行扫描,通过特征匹配来识别程序内部可能用到的一些标准算法。的使用方法为:点击PEiD主界面右下角的“=>”按钮,选择“插件”菜单项,然后选择“ ”,就可以弹出插件了。 插件会自动分析程序内部可能用到的标准算法,如图所示:

图片1.png

下图中显示了程序中在地址处存在MD5算法的特征:

图片2.png

除了要知道这些插件呢,还有一些小技巧,在IDA中,我们可以通过按下N键来对一个变量/函数/标记等进行重命名操作,函数和变量命名对于帮主我们理解程序的内部逻辑非常重要,就好比我们在编程的时候,培养良好的编程风格非常重要一样。

比如,如果函数经过我们分析之后,确定其功能为将传入的字符串转为大写形式,那么我们可以选中后按下N键对其进行重命名(将函数名命名为):

图片3.png

IDA还可以给汇编指令或者伪代码来添加注释。如果要对某一条汇编指令添加注释,只需要在汇编指令所在行按下封号(即**;)即可弹出对话框来接收注释;如果要给伪代码添加注释,则只需在伪代码所在行按下斜杠(即 /**)即可弹出对话框来接收注释。

OD也可以给汇编指令添加注释,只需要在汇编指令所在行后一列的空白处双击鼠标左键即可,如图所示:

图片4.png

我们来看实验吧,同样进入实验链接[《练习之算法分析》](…)。

好好看下实验描述,

主机C:\\4目录下有一个.exe程序,运行这个程序的时候会提示输入用户名和注册码进行注册,当输入正确的用户名和注册码时,会弹出成功提示的消息框,请对.exe程序进行逆向分析和调试,尝试编写一个注册机程序。

首先运行这个程序后要求输入一个用户名和密码进行注册,当注册失败的时候,程序将弹出一个消息框提示不正确,如图所示:

图片5.png

那么我们可以通过IDA的交叉引用功能来定位这一块的代码。使用IDA载入.exe程序,待分析结束后,通过页面找到,双击来到反汇编视图,在按下X按键对其进行交叉引用查找,经过一个一个进行分析,我们发现就是我们所要找的关键函数,我们通过F5得到这个函数的伪代码。通过对伪代码添加注释,以及对变量进行重命名操作,我们得到如下的代码片段:

图片6.png

上面的伪代码有两个错误,就是在第一个if语句中会判断密码的长度是否为33,如果不是33就弹出错误提示。其实这里是32(而用户名的长度则不能大于10)只是Hex-Rays 这个插件生成伪代码时出错了,所以需要记住,F5生成的伪代码并不保证完全正确。32这个长度对应汇编指令中的代码片段如下:

图片7.png

通过上面的伪代码的分析,我们发现只有这个函数的功能并不清楚,通过双击查看对应的伪代码,发现有点复杂,暂时无法理解,不过这并不要紧。

我们来用PEID的算法识别使用PEiD的进行快速识别,将.exe载入PEiD,点击PEiD主界面右下角的“=>”按钮,选择“插件”菜单项,然后选择“”,就可以弹出 插件了, 提示程序使用了MD5算法,如下图所示:

图片8.png

我们记住这个地址,在IDA的反汇编指令视图()中按下G键,输入,就会自动跳转到计算MD5的函数代码中,如图所示:

图片9.png

从这里并不能得到什么有用的信息,我们需要通过不断的回溯来理解程序的代码逻辑。通过往上查阅代码,我们知道位于函数之中,我们对进行交叉引用查找,如图所示:

图片10.png

可以从回溯到,继续通过交叉引用往上回溯,依次为、、、,而就是我们在实验步骤一种为一个暂时不理解的函数。那么我们可以猜测这个函数就是用来计算用户名的MD5值的,我们可以通过OD动态调试来验证我们的想法。

通过阅读IDA中的反汇编代码,我们知道在处调用了这个函数,

.text: call

现在OD载入.exe程序,在处设置一个断点,然后按F9运行程序,用户名输入test,密码输入一个32个字符的任意字符串,单击“注册”按钮,程序便会自动断下,断下后按F8进行单步跟踪,执行这个函数后,我们看到eax寄存器的值为,这个恰好就是test的MD5值。

图片11.png

用工具就是为了帮我们把复杂的事情变得简单起来,我们算法分析完之后就可以直接把题目解了,我们来编写一个注册机了。程序的注册算法为:将用户名进行MD5计算得到一个哈希值,将哈希值转换为答谢字符串即可,其中用户名的长度在1~10之间,不能超过10.

内置了MD5算法,可以非常方便的计算MD5值,我们编写这样一段脚本即可:(代码位于C:\\4\.py)

while True:

= **( "input :" )**

md5 = **. md5 ( ). (). upper()**

= md5**[::- 1 ] #** 翻转 字符串

print ": %s" %

我们输入用户名,就可以得到注册码为.4,输入程序可以成功注册,如图所示:

图片12.png

网络安全学习路线图(思维导图)

网络安全学习路线图可以是一个有助于你规划学习进程的工具。你可以在思维导图上列出不同的主题和技能,然后按照逻辑顺序逐步学习和掌握它们。这可以帮助你更清晰地了解自己的学习进展和下一步计划。

1. 网络安全视频资料

2. 网络安全笔记/面试题

3. 网安电子书PDF资料

如果你向网安入门到进阶的全套资料,我都打包整理好了,需要学习的小伙伴可以V我找我拿~

学网络安全/学黑客,零基础资料整理来啦~~~

~

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值