-
-
[求助]第一题 签到题
-
发表于: 2020-4-20 01:37 2670
-
将DEMO载入OD,随意输入123发现,提示 wrong!
通过API下messageBox断点,并返回到程序代码段。
因为这里会结束程序,那么右键地址00401790找到CALL进来前的地方。
通过反向分析发现
eax 必须是0x50才成功 , 那么sar 进行了一次位移。
0x50 = 01010000
0xA0 = 10100000
通过反向移动回来得到是0xA0,也就是eax必须是0xA0,位移才能变成0x50。
继续往上看cdq是将eax的第31bit全部赋值给edx,测试发现a0依然是0,所以edx等于0,sub 指令并不影响 eax结果。
继续往上观察eax来源,发现是执行了atoi,把字符串转换成数字,所以pass也就是对应的a0十进制结果:160
最终流程是:
1、先把用户输入的字符串160,转换成对应的整数,十六进制是0xa0
2、然后程序cdq,edx依然是0
3、sub eax,edx 0xa0保持不变
4、接着sar eax,1 右移使 0xA0(10100000)变成了 0x50(01010000)
5、最终结果是0x50。
反向破解流程:
1、手动将eax调整成0x50,并且左移,发现变成0xa0
2、由于发现了sub,但是发现减值是来自edx,但edx是来自cdq,但第0xa0的32bit依然是0,所以发现不变
3、接着发现eax值来自atoi转换,所以pass依然是字符串的160
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
- [原创]利用Magisk将Charles证书写入系统列表 12376
- [原创]某讯QQ钱包转账付款算法分析篇 42987
- [原创]初识iOS逆向学习笔记之Hopper 83993
- [原创]steam令牌算法分析 15066
- [原创]小米APP生成DeviceId算法分析 20850
看原图
赞赏
雪币:
留言: