有趣的安全游戏--哈密顿行动(四)突破程序的锁

第四题据说已经加强了


终于来了道逆向题····虽然是PE的,好吧,还是不擅长

题目信息:
题目啥都没说,就是一道注册类题,不过难度不大

先开始用IDA分析,看着真蛋疼,搜了一些函数符号,发现是VB的(起始图标很明显了)

下了个VB的分析工具,VB Decompiler,反汇编查看
这里写图片描述

可以好好看看这个校验函数,结合IDA可以动态调试,会用OD的应该更简单。

整个过程有三处做校验,分别对应为用户名校验、密码加密校验以及密码唯一值确定校验

第一处校验比较简单,就是完全匹配用户名,如截图
这里写图片描述

第二处校验是一个加密算法,读取密码中的每一字节,前后字节相加减去0x64,新生成的字符串和存储在内存中的字符串比较,这里要注意对应比较的是地址中的内容,不是地址值(被自己坑了)
这里写图片描述

针对此处的校验,可以枚举出密码,大概也有几十个,枚举的代码如下:

for first in range(0,0xff):
    badVal = 0
    arr = []
    nextval = 0
    for i in range(0,len(resultList)):
        if i == 0:
            nextval = resultList[i] + 0x64 - first
            arr.append(first)
        else:
            if nextval < 0 or nextval >= 0x7f or nextval < 0x20:
                badVal = 1
                break
            arr.append(nextval)
            nextval = resultList[i] + 0x64 - nextval
    if badVal == 1:
        continue
    if arr[11] + first == resultList[11] + 0x64:
        resultStr = ""
        print "first : %x %x" %(first,(arr[0]*arr[11]))
        for z in arr:
            resultStr += chr(z)
        print resultStr
    arr = []

第三处校验是基于第二次的校验,因为枚举出了很多,但答案是唯一的,因此此处过滤出了正确答案,走到这里,可以用IDA看看了,因为VB反编译出来的有一点误差,此处校验的方式是将字符串首尾字节相乘,与一固定值作比较,查看枚举的字符串,得到答案。

提交成功~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值