[英]Modify Hex values from executable file in C++ (Windows)
我正在嘗試修改可執行文件的特定部分,在程序中插入十六進制值並對其進行寫入,但是我在類型轉換方面遇到了問題。 我發現的唯一方法是通過ifs << (BYTE)0x12
插入,但是我無法創建動態變量來執行此操作。
這是功能:
int FileHexModify(int pos)
{
fstream ifs;
ifs.open ("C:\\Users\\User\\Desktop\\Modify.exe", fstream::binary | fstream::in | fstream::out);
std::string str((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
ifs.seekp(pos);
ifs << (BYTE)0x12;
if (ifs.is_open())
ifs.close();
return 0;
}
當我嘗試類似的東西
char *code = "1b";
ifs.write(code, 16);
我得到對應於十六進制1 b
的31 62
,但我只需要一個值0x1b
。 我找不到辦法。 你能告訴我路嗎? :)
提前致謝。
您需要char const* code = "\\x1b"
。 \\x
告訴編譯器后面跟着一個十六進制數字。 另外, ifs.write(code, 16)
是非常錯誤的。 寫入16個字節,而不是一個。 code
甚至沒有16個字節!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.