簡體   English   中英

在C ++(Windows)中從可執行文件修改十六進制值

[英]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 b31 62 ,但我只需要一個值0x1b 我找不到辦法。 你能告訴我路嗎? :)

提前致謝。

您需要char const* code = "\\x1b" \\x告訴編譯器后面跟着一個十六進制數字。 另外, ifs.write(code, 16)是非常錯誤的。 寫入16個字節,而不是一個。 code甚至沒有16個字節!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM