首页
社区
课程
招聘
[原创]bbvff的解题思路
发表于: 2015-10-19 15:20 2428

[原创]bbvff的解题思路

2015-10-19 15:20
2428
第一题

      第一题拿到手后,安装运行,随便打了几个字,观察日志,发现报java.lang.NumberFormatException: Invalid int: "aaaaa" 所以答案应该是数字,再用dex2jar和jd反编译看了一下结果,发现主要检查输入的在check里,但是jd反编译出错,而且这个文件特别大,于是想用smalidea来进行动态调试,调试开关用XInstaller打开,在check里从返回值向上看,发现大部分代码是没什么用的,只有几个有用,大概是把输入的值加上一个d为四的等差数列,再与520676进行比对,于是最后输入0,查看寄存器的值,做个减法得出答案。

第二题

      第二题没解出来,启动日志输出的摩斯密码解码后是”我就是答案“的拼音,这当然不是答案,java层没干什么,把输入的字串传到了libwbox.so,用ida调试跳出,看ida的分析发现它读取了/proc/pid/status 检查了TracerPid,于是我修改了读取的文件路径并复制了一份正常的文件,发现还是跳出,后来发现还有一段代码还原了路径/proc/self/status 并检查了TracerPid,并有.init_array 中的函数无限循环检查,同样修改了读取的文件,ida就能正常附加了,跟进去发现,它首先对输入字串的长度进行检查,大于16个字节则跳,小于16个字节时,先对每个字节加0,1,2,6,8,0xA,0xC,0xE,0x10,0x12,0x14,0x16,0x18,0x1A,0x1C,0x1E,再对每个字节加上0x1F,0xBC,0xDA,0xFF,0xE6,0x4C,0xBC,0x44,0xF5,0xB8,0x13,0xC8,0xEC,0xA8,0xCD,0xBD, 然后跳入一个计算的函数,结果是4个数,与0x5C,0xDA,0x77,0x2F,0xA3,0xC6,0x3E,0x39,0xB6,0xF0,0xF3,0xED,0x51,0x5A,0x99,0x86比较,相同则返回一,但是计算的函数没看懂,第二题就没解出来

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//