首页
论坛
课程
招聘
[原创]第三题 crackMe
2017-10-29 12:52 1894

[原创]第三题 crackMe

2017-10-29 12:52
1894

1. 运行程序,OD附加到进程,GetDlgItemTextA下断点能定位到关键CALL 434EF0,里面处理消息事件

2. 然后这个程序存在很多的反调试,必须全部干掉

00430B10:检测了好多逆向软件的窗口类名

0042DA7D:单步检测

0042D389、004314F0、004317C0:反调试检测

004305B0:反调试调用的退出CALL,直接干掉

3. 下面就可以愉快的调试分析了!

base64特征还是比较明显的;

那个sm3也有一些特征数 0x7380166F、0x4914B2B9、0x172442D7,可以确定sm3算法

然后就是其他小语句的分析,通过调试看参数,静态看流程,分析结果如下


4. 然后目标就是 sm3( base64_rev( base64_rev( input) ).subString(0, 3)) == inputString !!!大坑啊!!!

然后就去写程序跑吧,没有,怎么可能sm3的结果刚好能BASE64两次呢。。。最后才想到使用空串

5. 用od调试,在内存中发现空串的sm3数值

6. 然后第一个验证就过去了

7. 然后继续跑,第二个验证也过了。。。

8. 然后回过头来分析,183920f00e15a0433ee3a8fc90dd9ac164c4142ccf63ca189a8f645ec96ff8de 其实只是答案的前缀,因为用的是strncmp

然后再看看第二个验证,能通过是因为传入第二个验证的字符串,都是0x00,一个判断都进不去,肯定就执行函数尾部的return TRUE;












[培训]12月3日2020京麒网络安全大会《物联网安全攻防实战》训练营,正在火热报名中!地点:北京 · 新云南皇冠假日酒店

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 422
活跃值: 活跃值 (10)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
何小龙 活跃值 2 2017-10-30 18:06
2
0
666
雪    币: 6809
活跃值: 活跃值 (152)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
聖blue 活跃值 2017-10-30 19:09
3
0
不错!
雪    币: 480
活跃值: 活跃值 (81)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
奔跑的阿狸 活跃值 1 2017-10-30 20:09
4
0
聖blue 不错!
谢谢
游客
登录 | 注册 方可回帖
返回