practice 8之PEiD插件

第八题

PEiD有一个叫做Krypto ANALyzer的插件,使用这个插件可以对程序进行扫描,通过特征匹配来识别程序内部可能用到的一些标准算法。

先看题目,随便输入就会报错。

利用IDA找到关键点这些烂熟于心的步骤就不再提了,对下面这段关键算法分析完了之后发现关键函数是sub_401510,但是点开这个函数,真的是好长的一大串,

用PEid的插件进行分析,提示这个程序用了 MD5算法。

根据提示地址,在IDA反汇编指示图按下G,输入00401E5C,就会自动跳转到函数代码中

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

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

OK使用OD载入在00401752设置断点,输入test,直接跳转到执行sub_401510,看到eax寄存器值正好是test的MD5值

这里说明插件判别是正确的正好使用python写一个MD5的注册机

#!usr/bin/python
#-*- coding:utf-8 -*-
import hashlib
while True:     
username = raw_input("input username:")     
md5 = hashlib.md5(username).hexdigest().upper()     
serial = md5[::-1]  # 翻转字符串     
print "serial: %s" % serial
Contents
|