当前位置:   article > 正文

160个Crackme -030解析_crakeme030

crakeme030

目录

1.开战前,了解pe信息

2.准备开战,小型探测骚扰

3.实战,开始干架

4.找到敌人弱点,研究对战方针

5.总结对战经验


1.开战前,了解pe信息

首先查看pe,发现是vb写的,没有加壳,(vb变量结构体有个特征,往往数据存储在指针+8处)

2.准备开战,小型探测骚扰

一打开就是这界面,莫非还要加载文件?点击File,里面有个password选项,这应该就是待破解的了,随便输入123456,点击ok,提示Password incorrect,please try again ..

ok,那就老办法,上od,搜这串字符串,找到后,往上跟

往上一跟,看到password correct,here....   上面还调用了VarTstEq,这里不就是判断密码是否正确的地方?

 

3.实战,开始干架

既然找到地方了,开始分析密码怎么校验的。这部分也是最耗精力的,需要很细心,但也很锻炼逆向思维。

 前面很好理解,取用户输入密码长度,作为循环次数,依次取出每个密码的ascill码。但是中间有部分卡了我好久,不知哪里突然冒出个“2”,然后跟它去异或。然后我不断重复调试这里,终于明白它就是循环四次,不断取硬编码 02 00 00 00 。多次尝试,验证了自己的猜想。

然后就是比较密码qBQSYdXUe_B\V 怎么异或还原得到它的真实密码。

4.找到敌人弱点,研究对战方针

一开始我想不通异或的逆运算 ,网上查说异或的逆运算是同或,然后我拿qBQSYdXUe_B\V去同或,结果根本不对。我直接输入qBQSYdXUe_B\V,然后看到内存比较结果是,CrackTheWorld

 哎,怎么这么巧,是CrackTheWorld?突然脑子一转,我输入CrackTheWorld是不是就得到qBQSYdXUe_B\V?后来尝试一下,果然直接验证通过。

5.总结对战经验

虽然找到密码了,但是问题还存在,怎么取得异或的原操作数呢?根据推想,是不是异或的异或就回来了?后来自己每个byte自己手动推算,果然如此,只需要qBQSYdXUe_B\V 跟 02 00 00 00 02 ....异或就出来结果了。

感觉这个公式以前大学学过,哎,没想到大学那么菜....惭愧,一个挺简单的crakeme用了这么久。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号