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;128 位元組的 keyfile,裡面只用到了16位元組的兩個 filetime 時間? 還是我漏了什麼?#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()
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...