旺旺聊天記錄解碼 轉PEDIY

2021-08-22 14:11:56 字數 3973 閱讀 8184

軟體名稱:**旺旺

使用工具:od

作者宣告:只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!

旺旺所有檔案(這裡宣告檔案)的解碼都只用到下面這個函式,我將它還原成高階語言了。有錯誤之處請高手指教。

005c1070 /. 55 push ebp

005c1071 |. 8bec mov ebp, esp

005c1073 |. 83ec 14 sub esp, 14

005c1076 |. 53 push ebx

005c1077 |. 56 push esi

005c1078 |. 8b45 10 mov eax, dword ptr [ebp+10] ; [ebp+10]指向緩衝區

005c107b |. 8945 f4 mov dword ptr [ebp-c], eax ; 將[ebp+10]儲存在臨時變數[ebp-c],即[ebp-c]指向緩衝區

005c107e |. 8b4d 14 mov ecx, dword ptr [ebp+14]

005c1081 |. 894d f8 mov dword ptr [ebp-8], ecx ; 將[ebp+14]儲存在臨時變數[ebp-8]

005c1084 |. c745 fc 00000>mov dword ptr [ebp-4], 0 ; 初始化計數器為0

005c108b |. eb 09 jmp short 005c1096

005c108d |> 8b55 fc /mov edx, dword ptr [ebp-4] ; [ebp-4]計數器

005c1090 |. 83c2 01 |add edx, 1 ; 計數器加1

005c1093 |. 8955 fc |mov dword ptr [ebp-4], edx ; 將新值儲存入變數

005c1096 |> 8b45 fc mov eax, dword ptr [ebp-4]

005c1099 |. 3b45 18 |cmp eax, dword ptr [ebp+18] ; [ebp+18]是資料塊大小,按位元組加密

005c109c |. 7d 7d |jge short 005c111b

005c109e |. 8d4d f0 |lea ecx, dword ptr [ebp-10]

005c10a1 |. 894d ec |mov dword ptr [ebp-14], ecx ; 區域性[ebp-14]指標變數,指向區域性變數[ebp-10]

005c10a4 |. 8b45 fc |mov eax, dword ptr [ebp-4] ; 計數器載入eax

005c10a7 |. 99 |cdq ; 符號擴充套件

005c10a8 |. 8b4d 1c |mov ecx, dword ptr [ebp+1c] ; b9800常量,該常量是資料塊起始位置在檔案中的偏移

005c10ab |. 03c8 |add ecx, eax ; b9800(金鑰)加上計數器

005c10ad |. 8b45 20 |mov eax, dword ptr [ebp+20]

005c10b0 |. 13c2 |adc eax, edx

005c10b2 |. 8b55 ec |mov edx, dword ptr [ebp-14] ; 指標運算

005c10b5 |. 890a |mov dword ptr [edx], ecx ; ecx儲存入[ebp-10]

005c10b7 |. 8b45 f4 |mov eax, dword ptr [ebp-c] ; 緩衝區數字址載入eax

005c10ba |. 0345 fc |add eax, dword ptr [ebp-4] ; 指向偏移

005c10bd |. 33c9 |xor ecx, ecx ; ecx清0

005c10bf |. 8a08 |mov cl, byte ptr [eax] ; 取出乙個位元組,以下進行解密運算

005c10c1 |. 8b55 f0 |mov edx, dword ptr [ebp-10] ; [ebp-10]取的每個位元組

005c10c4 |. 81e2 ff000000 |and edx, 0ff

005c10ca |. 33c0 |xor eax, eax

005c10cc |. 8a82 ecd56f00 |mov al, byte ptr [edx+6fd5ec]

005c10d2 |. 8bf0 |mov esi, eax ; 暫時存入esi

005c10d4 |. 8b55 f1 |mov edx, dword ptr [ebp-f] ; [ebp-10](它是檔案偏移基址加上計數器),取它的每個位元組作為g_buf的下標,進行運算。

005c10d7 |. 81e2 ff000000 |and edx, 0ff

005c10dd |. 33db |xor ebx, ebx

005c10df |. 8a9a ecd56f00 |mov bl, byte ptr [edx+6fd5ec]

005c10e5 |. 8b55 f2 |mov edx, dword ptr [ebp-e] ; [ebp-10]取的每個位元組

005c10e8 |. 81e2 ff000000 |and edx, 0ff

005c10ee |. 33c0 |xor eax, eax

005c10f0 |. 8a82 ecd56f00 |mov al, byte ptr [edx+6fd5ec]

005c10f6 |. 03d8 |add ebx, eax

005c10f8 |. 8b45 f3 |mov eax, dword ptr [ebp-d] ; [ebp-10]取的每個位元組

005c10fb |. 25 ff000000 |and eax, 0ff

005c1100 |. 33d2 |xor edx, edx

005c1102 |. 8a90 ecd56f00 |mov dl, byte ptr [eax+6fd5ec];6fd5ec是個陣列,大小為255,我從記憶體中直接dump下來了,名為g_buf

005c1108 |. 2bda |sub ebx, edx

005c110a |. 33f3 |xor esi, ebx

005c110c |. 33ce |xor ecx, esi

005c110e |. 8b45 f8 |mov eax, dword ptr [ebp-8]

005c1111 |. 0345 fc |add eax, dword ptr [ebp-4]

005c1114 |. 8808 |mov byte ptr [eax], cl

005c1116 |.^ e9 72ffffff \jmp 005c108d

005c111b |> 5e pop esi

005c111c |. 5b pop ebx

005c111d |. 8be5 mov esp, ebp

005c111f |. 5d pop ebp

005c1120 \. c3 retn

下面付上解碼程式的c++原始碼

#include

#include

//解碼函式,上面的解碼函式有7個引數,其中指向緩衝區的兩個,到現在還不明白為什麼(所以被我減少到6個引數),下面注釋保留兩個字的,在反彙編過程中發現沒有用到過。

void decode(const int m/*保留*/,const int n,/*保留*/char *buf,

int bufsize,int foffset,const int l=0/*保留*/);

unsigned char g_buf[256]=;

char buf[0x400];

void main()

closehandle(hfile);

closehandle(hfile1);

}void decode(const int m/*保留*/,const int n,/*保留*/char *buf,

int bufsize,int foffset,const int l/*保留*/)

}

實時聊天 記錄

基礎 時事通訊 對socket進行封裝的js var opt var el data opt 建立群通話客戶端 var eb new vertx.eventbus opt.url url 後台配置的服務位址 如 eb.onopen function 群組id 房間號 房間id 統一房間號才能再聊天室...

遊戲聊天記錄

戰鬥計算過程 1 暴擊 命中 miss等判定 2 根據玩家屬性和技能給予的邏輯進行計算,算出來攻擊和防禦的數值,綜合兩者計算出來傷害的血量 3 基礎計算 技能邏輯加成 暴擊 傷害吸收 傷害減免 吸血 反傷 4 基礎計算公式 attack attack attack n def 可以通過技能傳入引數來...

技術感想,聊天記錄

crazycy 00 嗯 技術是手段 哈哈 crazycy 00 驅動概念 crazycy 00 形成best pratice,結果為final 00 是啊,要從不同的角度來考慮 crazycy 00 鍵盤一些鍵不好用了 我就改敲英文 別笑話我哈阿 00 呵呵 沒關係 crazycy 00 我們應該...