一、工具:
1、IDA
二、解题过程
①、查壳,我这边显示不是有效的PE文件,不管他,载入32位IDA后提示我们用64位的,那就切换成64位的IDA
②、载入后搜索字符串,发现关键字符串
挑一串双击定位到汇编窗口
这里我挑的 this is the right flag! ,到了汇编窗口双击此段字符串,选中后右键->交叉引用列表
来到视图窗口
③、查看伪代码
分析代码可得在 v8 <= v2 的情况下,字符串 Str2 中下表为j的字符如果对应的 ASCII 码等于 111 则将该字符改为 ASCII 为 48 所对应的字符
(技巧:选中数字,然后按 r 键就可以把数值转成对应的 ASCII 码,111 对应的字符为 o ;48 对应的字符为 0)
④、双击 Str2 可看到 Str2 所对应的字符串为:{hello_world}
把字符串里的 o 改成 0 即可得到正确的 flag :flag{hell0_w0rld}
收获:
1、通过交叉引用可以找到代码之间的关系,同时也能快速定位到关键地方的伪代码
2、选中数字,按 r 键可以转成 ASCII 对应的字符