前言
以前搞過這遊戲。自從某版本的簽名驗證加強之後基本很難搞了。今天看了下,
lua採用加密方式 evp_aes_128_cbc()+gzip壓縮,用openssl-android的靜態庫,
(匯出函式全沒了)不過不影響分析。
正文關鍵庫libhegame.so。ida載入。檢視j_j_aassetmanager_open 交叉引用
上述**assets目錄下讀取檔案到記憶體。並返回記憶體指標
接著向上層層追蹤,最終來到這方法。
f5檢視偽**,分析
檢視方法sub_6ee84:
經過整理關鍵**:
void aesdecrypt(unsigned char* data,const char*path)
; evp_cipher_ctx ctx;
const evp_cipher *cipher;
cipher = evp_aes_128_cbc();
unsigned char iv[evp_max_iv_length];
memcpy_s(iv, 16, data, 16);
evp_cipher_ctx_init(&ctx);
int ret = evp_decryptinit_ex(&ctx, cipher, nullptr, keydata, iv);
assert(ret == 1);
unsigned char* result = new unsigned char[datasize - 16];
memset(result, 0, datasize);
int len1 = 0;
ret = evp_encryptupdate(&ctx, result, &len1, (data + 16), datasize - 16);
assert(ret == 1);
int len2 = 0;
if (datasize % 16 != 0)
result += len1;
assert(ret == 1);
return;
}byte* undata = new byte[buf_size];
ulong nodata = buf_size;
zdecompress(result, datasize - 16, undata, &nodata);
remove(path);
file* file = fopen(path, "wb");
fwrite(undata, nodata, 1, file);
fclose(file);
delete undata;
delete data;
printf("解密成功:%s\n",path);
return;
}
測試結果:
結束語由於採用aes對稱加密演算法,加密解密密匙一樣的,修改完加密回去應該沒問題,需要注意的是是否存在lua檔案校檢。
某手遊音訊替換
由於火影和300使用的bank檔案格式都是由fmod軟體匯出的所以軟體共用 本教程以bgm7.bank 為例替換的是站街時的bgm 有興趣的可以嘗試替換其他語音 1.使用bank音源修改工具開啟bgm7.bank 2.找到要替換的聲音 利用這個我們鎖定了最後乙個音訊 3.替換聲音 然後點選生成即可 ...
某密手遊保護簡略
簡單分析了下某密針對手遊推出的保護功能,看看強度如何。簡單測試了下,這款遊戲是u3d的,對dll做了靜態加密,對常見的修改器 加速器做了檢測,有多程序保護阻止了暫停 除錯等功能。dll加密 關鍵dll做了整體加密,在動態執行時進行解密,但是加密的強度真的需要吐槽下,並且沒有對mono動態庫做任何處理...
手遊用lua實現邏輯的一些筆記
利用指令碼實現邏輯的話,想要更新新版本的話,不必再次去提交,只需要將更新的指令碼更新到使用者手機就行了。如果做過的手遊的就應該知道新本本更新到各大平台是需要時間審核,有時候還要打回重新修改,這個時間代價是比較大的。lua的執行效率還可以,作為實現邏輯是可以的。cocos2dx本身就是支援lua的。加...