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

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