欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Easy kengen

程序员文章站 2022-05-15 12:15:00
...

题目链接 : http://reversing.kr/challenge.php 第二题
下载下来是一个压缩包,解压后有一个exe文件和一个txt文件。打开readme,可以看到下面内容:

***ReversingKr KeygenMe
Find the Name when the Serial is 5B134977135E7D13***

看意思应该就是在程序输入name,程序会计算出一个Serial,正确答案的话应该最后算出来的等于“5B134977135E7D13”。
下面看程序,用IDA打开,F5反汇编,得到下面内容:

Easy kengen

主要就是sprintf那一句,将输入的name与一个数进行异或,所以只要将Serial异或一次就可以得到原始的name。
程序如下:

Serial = '5B,13,49,77,13,5E,7D,13'
Serial = [int(i, base=16) for i in Serial.split(',')]
encode = [16,32,48]
for i in range(8):
    Serial[i] = encode[i % 3] ^ Serial[i]
name = ''.join([chr(i) for i in Serial])
print(name)

最后输出:K3yg3nm3
测试一下
Easy kengen
正确。

相关标签: Reverse