C實現修改可執行文件中的字符串,生成新的可執行文件

jopen 10年前發布 | 16K 次閱讀 C語言 C/C++開發

這種技術常用在遠程控制軟件中,我們已有遠程控制軟件的服務器端。我們利用遠程控制軟件的客戶端配置生成我們自己的服務端軟件,實現服務器端的端口及IP地址更新的功能。

 

下邊看源代碼

 

#include <stdio.h>

include <Windows.h>

int FindStr(char destStr, char srcStr, int destStrLen, int srcStrLen); void ReplaceStr(char destStr, char srcStr, int beginPoint);

int main() { FILE pReadFile; FILE pOutFile; char *pFileBuf;

//打開我們要修改的源程序 if ((pReadFile = fopen("../custom/TestPE.exe", "rb")) == NULL) { printf("It's failure to open the readable file\n"); return -1; }

//我們要生成的源程序 if ((pOutFile = fopen("../custom/TestPE1.exe", "wb")) == NULL) { printf("It's failure to open the writable file\n"); return -1; }

fseek(pReadFile, 0L, SEEK_END); int fileLen = ftell(pReadFile);

pFileBuf = (char *)malloc(fileLen + 1); if (pFileBuf == NULL) { fclose(pReadFile); return -1; }

fseek(pReadFile,0L,SEEK_SET); fread(pFileBuf, fileLen, sizeof(char), pReadFile); pFileBuf[fileLen] = '\0';

//我們要修改成的字符串 char modifyStr = "BBBBBBBBB"; //源程序中的字符串 char findStr = "AAAAAAAAAAAAAAA"; int beginPoint;

//我們在讀取的源程序數組中查找我們要查找的字符串的起始位置 beginPoint = FindStr(pFileBuf, findStr, fileLen, 0); if (beginPoint == -1) { printf("It's failure to find the string\n"); return -1; }

//替換我們的字符串 ReplaceStr(pFileBuf, modifyStr, beginPoint);

//生成我們修改后的源程序 fwrite(pFileBuf, fileLen, sizeof(char), pOutFile);

fclose(pReadFile); fclose(pOutFile); if (pFileBuf != NULL) { free(pFileBuf); pFileBuf = NULL; }

return 0; }

int FindStr(char destStr, char srcStr, int destStrLen, int srcStrLen) { int i,j,findStrLen;

if (srcStrLen == 0) { findStrLen = strlen(srcStr); } else { findStrLen = srcStrLen; }

for (i = 0; i < destStrLen; i++) { for (j = 0; j < findStrLen; j++) { if (destStr[i + j] != srcStr[j]) { break; } }

if (j == findStrLen) { return i; } } return -1; }

void ReplaceStr(char destStr, char srcStr, int beginPoint) { int srcStrLen, i; srcStrLen = strlen(srcStr);

for (i = 0; i < srcStrLen; i++) { destStr[beginPoint + i] = srcStr[i]; }

destStr[beginPoint + srcStrLen] = '\0'; }</pre>來自:http://blog.csdn.net/u012554768/article/details/39396117

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!