我一直在考慮如何保護(hù)我的C / C ++代碼免于反匯編和逆向工程。通常,我永遠(yuǎn)不會在自己的代碼中寬恕這種行為。但是,為了所有人的安全,我目前正在研究的當(dāng)前協(xié)議絕不能被檢查或理解?,F(xiàn)在,這對我來說是一個新主題,互聯(lián)網(wǎng)對于預(yù)防逆向工程并不是真正有用的資源,而是描述了大量有關(guān)如何進(jìn)行逆向工程的信息到目前為止,我想到的一些事情是:代碼注入(在實(shí)際函數(shù)調(diào)用之前和之后調(diào)用偽函數(shù))代碼混淆(破壞二進(jìn)制文件的反匯編)編寫我自己的啟動例程(調(diào)試器很難綁定到)void startup(); int _start() { startup( ); exit (0) } void startup() { /* code here */ }運(yùn)行時檢查調(diào)試器(如果檢測到,則強(qiáng)制退出)功能蹦床 void trampoline(void (*fnptr)(), bool ping = false) { if(ping) fnptr(); else trampoline(fnptr, true); }無意義的分配和釋放(堆棧變化很多)無意義的虛擬呼叫和蹦床(拆卸輸出中的大量跳躍)大量鑄件(用于模糊拆卸)我的意思是,這是我想到的一些事情,但是在適當(dāng)?shù)臅r間范圍內(nèi),代碼分析人員可以解決所有這些問題,或者可以由代碼分析人員弄清楚這些問題。我還有別的選擇嗎?
3 回答

慕森王
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個贊
但是只要有適當(dāng)?shù)臅r間范圍,代碼分析人員就可以解決所有這些問題,或者可以通過代碼分析找出它們。
如果您給人們提供了一個他們可以運(yùn)行的程序,那么他們也將有足夠的時間對它進(jìn)行反向工程。這就是程序的本質(zhì)。一旦二進(jìn)制文件可供想要解密的人使用,您就無法阻止最終的逆向工程。畢竟,計算機(jī)必須能夠解密才能運(yùn)行它,而人類只是速度較慢的計算機(jī)。
- 3 回答
- 0 關(guān)注
- 761 瀏覽
添加回答
舉報
0/150
提交
取消