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

相關文章
相關標籤/搜索