160个Crackme -030解析

目录

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用了这么久。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值