资源见上传文件,这里很多人使用ida进行静态分析,但是这样太依赖那个F5键了,我会用od进行一步步反调试得到keyGen.
先根据关键字符串得到主要跳转(我是这个办法),然后可以看到附近时一个简单的跳转语句:
只是定位到跳转还不行,往上稍微翻一下,就可以看到一个按照一个序列取出相对应ascii的操作,代码如下:
我一开始在这停留了比较久的时间,是因为我看到栈控件已经有输入的字符串,以为之前的是某一个函数得到用户输入的字符串就完事了。后来调试的时候不对,单纯的依据输入的字符串得到的下标值是取不到后面的大写字母和数字的 。然后根据栈回溯的方法,得到输入的处理函数。
这个过程比较简单,就是如果是数字就减去0x30,是大写字母就0x1D,是小写字母就减去57
根据索引得到下表,和字符串进行比较。
keyTab[]=‘abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ’
key[index]=“KanXueCTF2019JustForhappy”
keyGen如下(太晚了这是别的大佬写的):