2020/5/30 [FlareOn6]Overlong
Flare-on第六届挑战赛的题,
挺迷的,这个挑战赛的题都挺有水平。
IDA打开就仨函数:
Main函数也挺简单:
对v4处理,存到text,输出,没了。
然而疑惑的地方是,v4有这么长:
(比这个还长)
但是这里指处理了28,即0x1C的长度。
结合他运行时跑出的数据:
数了数算上空格正好是这么长,我有理由怀疑他没有处理后面的字符。
所以我们要做的就是把处理长度从0x1C延长到整个长度,数了数是0xAF个字符。
从:到
B6 – 08 + 1= B8 – 08 - 1 = B0 – 1 = AF
所以我下意识打开OD去改数据。
为什么不用IDA改?因为我改了之后不会保存成二进制文件。
然鹅打开OD之后我发现,根本找不到这段数据,好像直接进入dll了:
然后我想了想,怎么修改呢?
文件的本质就是二进制啊!那我直接找个十六进制修改器,找到对应的机器码不就行了:
这里本来是6A 1C 68 ,改成了6A AF 68,再次运行:
(其实也可以按照程序逻辑写一遍代码,但是我觉得太麻烦了)