C實現修改可執行檔中的字串,產生新的可執行檔

來源:互聯網
上載者:User

標籤:c實現修改可執行檔   遠端控制軟體設定服務端代碼實現   遠端控制軟體更新ip連接埠的代碼實現   

這種技術常用在遠端控制軟體中,我們已有遠端控制軟體的伺服器端。我們利用遠端控制軟體的用戶端配置產生我們自己的服務端軟體,實現伺服器端的連接埠及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‘;
}

C實現修改可執行檔中的字串,產生新的可執行檔

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.