最近由于公司項目原因,開始學(xué)習(xí)入手C++的加殼技術(shù)殼的編寫,參考文獻oBuYiSeng的博客里面詳細的介紹了加殼的原理和開發(fā)步驟。
個人在開發(fā)的時候碰到了一些問題,總結(jié)一下,希望對在做加殼的朋友有幫助,如果有不足的地方,望大家指出
個人的開發(fā)環(huán)境:vs2015
-
問題一
在構(gòu)建項目加殼代碼Stub.DLL的時候出現(xiàn)LNK2001:無法解析外部符號 __free 和LNK2001:無法解析外部符號 __memove 等錯誤的問題
原因:在構(gòu)建dll項目的時候選擇win32的時候選擇了支持MFC,當時構(gòu)建項目是基于mfc的項目,所以勾選了MFC的支持
圖一.png
解決:在構(gòu)建的時候默認不要添加支持MFC的支持
問題二:
在解決問題一后,構(gòu)建項目后,實現(xiàn)加殼代碼后,添加了指定程序入口函數(shù)
#pragma comment(linker, "/entry:\"StubEntryPoint\"") // 指定程序入口函數(shù)為StubEntryPoint()
#pragma comment(linker, "/merge:.data=.text") // 將.data合并到.text
#pragma comment(linker, "/merge:.rdata=.text") // 將.rdata合并到.text
#pragma comment(linker, "/section:.text,RWE") // 將.text段的屬性設(shè)置為可讀、可寫、可執(zhí)行
這個時候編譯,會報錯誤,如下:

圖二.png
原因:因為在各種嘗試后,最后在切換編譯SDK版本的時候發(fā)現(xiàn)可以編輯過,因為在VS2015不支持該參數(shù)
命令
解決:目前的解決方案是將平臺的工具集切換到2012的,編譯正常通過,個人試過了2013也是可以編譯通過

image.png
以上問題,目前還沒有發(fā)現(xiàn)其他的解決方法,如果有哪位大神有其他解決方案,歡迎下方留言指導(dǎo)
