XueTr PC Hunter pro 註冊分析

2022-04-01 08:33:01 字數 1778 閱讀 9808

xuetr 介紹:

pro版 介紹上說會讀取 pchunter.ek 這個keyfile,所以od載入,bp createfilea, bp createfilew

會斷兩次,都是斷在同乙個函式,稍微跟幾步會檢查檔案大小是不是256位元組,不是就over,

開啟 pchunter.ek,我開始是填入 12345678901234 ... 123456 共256位元組, 填什麼都行,後來發覺填寫 00~ff更方便定位(下面**就是這樣)

往下走,來到演算法部分,首先是

3個引數的函式 (??, "shoujiershisishi", 16), **是給演算法準備key,因為好多演算法都是這樣,先set_key,然後再呼叫encrypt/decrypt,

緊接著下一行

4個引數的函式 (??, output buffer, key_file內容, 128), 一看就是解密keyfile了,到這還不知道是什麼演算法,猜測出aes_decrypt有幾點:

1.第乙個圖的 aes_set_key 裡,用 ida 分析 41fb90,可以看到有 switch( case 16: ...   case 24: ...   case 32: ), aes中 16,24,32 分別對應金鑰長度是 128, 192, 256 bit,除錯時的值是 16, 和上面的key "shoujiershisishi" 長度是 16 對應

2.演算法有個特徵是異或 0x1b,往上搜了下,aes 中有用到

3.輸入和輸出有固定模式,因為輸入是1234567890..這樣,所以圖上5行是乙個迴圈, 而輸出也是5行乙個迴圈,

aes的ecb模式就是,google下可以搜到:

4.作者肯定是自己encrypt,然後在程式裡在decrypt

簡單寫了個測試,確認是 aes_ecb_decrypt,接著往下

來到一堆獲取時間的函式,但確定不了 是從128位元組的哪部分讀取的,所以重新填充key file,這次用 00 ~ ff 填充, 發覺是從偏移 80 和 88 分別讀取了兩個 filetime 結構體,作為starttime 和 endtime

最後,寫段**生成 keyfile:

#include #include #include #include using namespace std;

#include "crypto/aes.h" // 用到了cryptopp 庫

#include "crypto/modes.h"

#include "crypto/filters.h"

using namespace cryptopp;

templatestring hex2str(bytet* hex, int len, const string& delim=" ")

#pragma pack(push, 1)

struct reg ;

#pragma pack(pop)

int main()

128 位元組的 keyfile,裡面只用到了16位元組的兩個 filetime 時間? 還是我漏了什麼?

amcharts破解 註冊 註冊方法 註冊碼

size x large 用swf decompiler軟體載入swf檔案,在resources下找action中的mainmoive,中有一段如下 function checkkey serial end if end of the function 這就是序列號的 再往下看 key loader...

C 軟體註冊和註冊

原理就是軟體與序號產生器使用同一種演算法,將資料進行匹配。註冊後將資料寫入至登錄檔中。一種簡單的序號產生器的方式。1 軟體的實現 using system using system.collections.generic using system.linq using system.manageme...

動態註冊和靜態註冊

1 四大元件只有廣播接收者可以不在清單檔案中註冊 2 靜態註冊 在清單檔案中通過宣告乙個receiver節點指定intent filter,這種方式就是靜態註冊 3 動態註冊 registerreceiver receiver,filter 4 登出的方法 unregisterreceiver re...