加殼上碰到的問題

weixin_34357887發表於2018-04-10

最近由於公司專案原因,開始學習入手C++的加殼技術殼的編寫,參考文獻oBuYiSeng的部落格裡面詳細的介紹了加殼的原理和開發步驟。
個人在開發的時候碰到了一些問題,總結一下,希望對在做加殼的朋友有幫助,如果有不足的地方,望大家指出
個人的開發環境:vs2015

  • 問題一
    在構建專案加殼程式碼Stub.DLL的時候出現LNK2001:無法解析外部符號 __free 和LNK2001:無法解析外部符號 __memove 等錯誤的問題
    原因:在構建dll專案的時候選擇win32的時候選擇了支援MFC,當時構建專案是基於mfc的專案,所以勾選了MFC的支援


    10761725-3a3e51a707146ead.png
    圖一.png

    解決:在構建的時候預設不要新增支援MFC的支援

  • 問題二:
    在解決問題一後,構建專案後,實現加殼程式碼後,新增了指定程式入口函式

#pragma comment(linker, "/entry:\"StubEntryPoint\"") // 指定程式入口函式為StubEntryPoint()
#pragma comment(linker, "/merge:.data=.text")        // 將.data合併到.text
#pragma comment(linker, "/merge:.rdata=.text")       // 將.rdata合併到.text
#pragma comment(linker, "/section:.text,RWE")        // 將.text段的屬性設定為可讀、可寫、可執行

這個時候編譯,會報錯誤,如下:


10761725-22b15793a26b7cc8.png
圖二.png

原因:因為在各種嘗試後,最後在切換編譯SDK版本的時候發現可以編輯過,因為在VS2015不支援該引數
命令
解決:目前的解決方案是將平臺的工具集切換到2012的,編譯正常通過,個人試過了2013也是可以編譯通過


10761725-f41f1f1158b0869d.png
image.png

以上問題,目前還沒有發現其他的解決方法,如果有哪位大神有其他解決方案,歡迎下方留言指導

相關文章