链接见标题。
下载所给压缩包,解压后得到两个文件:
直接看ReadMe.txt:
ReversingKr KeygenMe
Find the Name when the Serial is 5B134977135E7D13
用IDA打开Easy Keygen.exe,直接F5
主要伪码重点在两个scanf的周围。
第一个scanf,是让你输入姓名,第二个scanf是让你输入序列号。
观察for循环语句,重点在那个sprintf,aS02x的字符串是%s%02x,意为将输出格式化为两位的十六进制字符串,不够两位的在前面补0。
看sprintf里面最后一个参数,是v9[i] ^ v6 [i],v9[i]是我们输入的姓名,那么v6[i]是什么呢?我们看一下v6声明的部分:
声明发现v6 v7 v8是连在一块的,并且下面都给他们赋值了。那么下面调用的v6就是有三个元素的数组。
那么结合那个if(i >= 3),发现v6是被循环使用的。
这时候我们就可以写代码来破解了。
将ReadMe给出的序列号,两个两个分开,作为sprintf中运算后的结果,再与v6数组的元素异或,就可以得到flag了。
flag = K3yg3nm3
网友评论