杰瑞的影分身——bugku
解题思路
简单浏览下程序思路,可以发现程序的输入,但程序的结果比较过程则没有发现。
通过网上搜索,在sub_402770的函数中Block部分应该也是一个函数,我猜测具体过程是由前一句sub_401C40函数生成的,因此直接在这下断点,直接动态调试。
程序的比较过程还是比较明显的,但还是调试了我半天,具体过程就不贴图了。
第一个过程
对input[i]进行异或4,然后当 i % 3 == 1时,还将input[i]与一串字符串第(3 * i)位异或(但根据该字符串来进行解题时,出现的结果不太对,因此我直接记录进行异或的字符,直接异或了)
第二个过程
对sub_4017B0函数生成的字符串进行处理。
由于程序的进行,处理后的字符串可以直接读取,因此不用管过程,直接得到结果。
str1 = "e4bdtRV02"
后面的字符被第十位的 0 截断了,因此只有9位了。
第三个过程
将变化后的input[i]与sub_401BD0(i)所得到的返回值 + 2 进行异或。
同时如果input的前九位与str1的前九位相加。
解题脚本
1 | def getnum(a1): |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 hahbiubiubiu!