所以。假設我要製作一個十六進制編輯器來編輯...哦...讓我們說一個.DLL文件。如何使用C#或C++編輯.DLL文件的十六進制?對於「固定部分」,我想讓它可以從程序中瀏覽特定的.DLL,在編程的文件上有一些預先編碼的按鈕,當按下按鈕時,它會自動執行請求的操作,這意味着該按鈕已預編碼,以知道在.DLL中查找什麼以及要將其更改爲什麼。任何人都可以幫助我開始呢?如何製作固定的十六進制編輯器?
另外,最好是C#。謝謝!
所以。假設我要製作一個十六進制編輯器來編輯...哦...讓我們說一個.DLL文件。如何使用C#或C++編輯.DLL文件的十六進制?對於「固定部分」,我想讓它可以從程序中瀏覽特定的.DLL,在編程的文件上有一些預先編碼的按鈕,當按下按鈕時,它會自動執行請求的操作,這意味着該按鈕已預編碼,以知道在.DLL中查找什麼以及要將其更改爲什麼。任何人都可以幫助我開始呢?如何製作固定的十六進制編輯器?
另外,最好是C#。謝謝!
基礎非常簡單。
DLL或任何文件是一個字節流。
基本文件操作允許您讀取和寫入文件的任意部分。藝術術語基本上是「隨機訪問文件操作」。在C中,基本操作是read(),write()和lseek()。
讀取允許您讀取緩衝區中的字節流,寫入允許您爲文件寫入字節緩衝區,lseek允許您在文件中任意位置。
實施例:
int fd = open("test.dat", O_RDWR);
off_t offset = lseek(fd, 200, SEEK_SET);
if (off_t == -1) {
printf("Boom!\n");
exit(1);
}
char buf[1024];
ssize_t bytes_read = read(fd, buf, 1024);
offset = lseek(fd, 100, SEEK_SET);
ssize_t bytes_written = write(fd, buf, 1024);
flush(fd);
close(fd);
這從文件中讀取1024個字節,開始在該文件的第200個字節,然後將其寫回到在100個字節的文件。
一旦您可以更改文件中的隨機字節,就需要選擇要更改的字節,如何更改它們以及執行相應的讀取/寫入/寫入以進行更改。
請注意,這些是最原始的I/O操作,根據您的語言等可能會有更好的選擇,但它們都基於這些原語。
解釋文件的字節,顯示它們等。這是讀者的練習。但是這些基本的I/O功能爲您提供了更改文件的基礎知識。
如果想法是加載一個十六進制編輯框,你可以使用下面的代碼:Be.HexEditor 編輯一個文件的「十六進制」只不過是改變其中的字節。預編程改變的部分將是更一般的類型。但是對於實際查看,查找並選擇更改任何你想要的選項,Be.HexEditor是一個不錯的選擇。我在一年前使用它,我希望它有一些新功能,可以讓你的生活更輕鬆。
到目前爲止您的方法是什麼? – 2010-04-01 01:22:23
聽起來很神奇 – sisis 2010-04-01 01:22:44
沒有辦法,因爲此刻,我的時間有點短,但春假即將到來,男人會感到無聊。 – Kevin 2010-04-01 01:28:50