Easy Keygen练习

    练习160系列,被打击到了,忽然想到Reversing.Kr的Easy_Keygen,就来蹂躏它找找自信....ios

    仍是老规矩,下载下来后,运行程序试试,算法

按下enter一闪而过。回到文件夹,看到一个"ReadMe.txt"文件,点开发现它提供了一个Serial,要求咱们找到对应的Name,而Name->Serial的算法就蕴含在程序中。spa

    无论它牛鬼蛇神,暂且先放入IDA中分析一下,抱着有提示的想法,我打开String看看,调试

运气不错,看到了“Correct!”的提高,转到代码窗口并溯源,看到了scanf的调用,code

此时,把调试工做转到OD中吧。开发

    分析获得算法用C++表示:string

#include <iostream>
using namespace std;

int main()
{
    char key[64]={0};
    string name="123456";
    int code[3]={0x10,0x20,0x30};

    for(int i=0;i<name.length();i++)
    {
        int tmp_code=static_cast<int>(name[i])^code[i%3];

        if(tmp_code<16)                      //十六进制展开只有一位数的话,前面补‘0’
            cout<<0;
        cout<<hex<<tmp_code;
    }
    cout<<endl;
}

往下看,io

每次取2个字符,进行Serial和Key的对比,不相等则跳转到“Wrong!”。ast

    算法大致已经出来了,逆向异或计算一下就行了,最后获得的Name(Flag):K3yg3nm3    class

相关文章
相关标签/搜索