2014-03-24 41 views
-3

我正在寫一個C++程序,它接受輸入作爲EXE文件,加密它(只是xoring),並將加密EXE作爲資源添加到另一個EXE(存根)。解密的EXE不會運行

存根(stub)解密exe並保存它。問題是解密後的exe不會運行。字節相同,我可以在PE編輯器中打開解密的exe文件,但它不會運行。

有什麼建議嗎?

+0

你在保存的文件上設置了可執行標誌嗎? –

+2

@JoachimPileborg PE編輯器建議這是Windows,因此不存在可執行標誌 –

+0

什麼是錯誤消息? –

回答

4

如果原始.EXE和解密後的.EXE是真的相同,並假設解密的可執行文件是Windows的.exe擴展名爲.exe的文件(如您提及.exe和PE格式似乎表明),這可能意味着你偶然發現了某種安全功能。

程序的行爲是single-stage malware dropper的行爲。不要緊,如果解密文件是而不是實際上是惡意的:系統無法知道它;它會看到一個可執行文件,它創建另一個可執行文件並嘗試執行它,並將其標記爲「不要執行此操作」(例如,通過DisallowRun。還有其他方法)。

也可以(並且不採取這種錯誤,但更可能)你的確做錯了什麼:擴展名爲.EXE不,該文件是不準確相同(您是否檢查過原始文件和解密文件的MD5/SHA校驗和?),您試圖在文件仍然打開時運行該文件...

嘗試查看事件查看器和/或防病毒軟件日誌,如果有的話,看看這是否會有所改變。這是您自己的開發機器嗎?您是否擁有完整的管理員權限來檢查策略,以防萬一?此外,請檢查並報告錯誤狀態和/或嘗試執行時可能得到的任何錯誤消息。

+0

非常感謝。 MD5校驗和是不同的,我不知道爲什麼。如果我解散原始和解密,ASM它vety不同,不知道爲什麼。 AV保護關閉。 – Valentino

+0

那麼......你先檢查了明顯的東西嗎?你確定你與*相同*鍵異或,當保存到新的可執行文件和創建新文件時都是如此?你有沒有檢查一步一步的調試器,實際讀取和寫入的字節是你期望他們是什麼? (對不起,如果我可能聽起來光顧,但事實是,你不提供關於如何繼續進行的很多信息 - 更不用說爲什麼* - 所以我只能拿出最明顯的東西)。 – LSerni

+0

是的,也許我找到了問題。我正在訓練二進制文件讀取從一個char * ...我試圖修復 – Valentino