1. 程式人生 > >用程式生成另一個程式

用程式生成另一個程式

一般木馬都能根據使用者配置自動生成服務端程式,也就是由一個程式生成另一個新的程式。看起來挺複雜,以前沒試過,想了下其實不難。 
思路是讀寫檔案,就是將要生成的程式作為資源讀進來。
事例:

①生成待生成的程式test.exe:

//待生成的程式這裡簡單化為彈框,標題和內容由另一個程式制定生成新的程式。
#include<windows.h>
const char title[100]={'A'};
const char content[100]={'B'};
int main()
{
    MessageBox(NULL,content,title,0);
}
②選擇要修改的位置
 這裡使用winhex載入然後找到,title 和content的開始區域分別為0xEF8,0xF60(如下圖所示),這就是為什麼前面宣告時用常量



③生成程式的程式
其實就是讀進上面的內容然後修改引數位置再copy出新程式。簡略程式碼如下:

#include<iostream>
#include<cstdlib>
#include<fstream>
using namespace std;
int main()
{
    char title[100],content[100];
    cin>>title>>content;    //輸入生成程式的彈窗標題和內容
    fstream fdat;
    fdat.open("test.exe");  //讀取待生成程式資源,這裡
    if(fdat)
    {
    fdat.seekp(0xef8);     //修改   
    fdat<<title;
    fdat<<'\0';
    fdat.seekp(0xf60);
    fdat<<content;
    fdat<<'\0';
    fdat.close();
    }
    system("copy test.exe test1.exe");   //複製為新的程式test1.exe,即新生成的程式在同一目錄下,執行就會看到自定義的標題和彈窗
}
這樣用上面的程式就能自定義生成不同的彈窗程式,其他程式生成也是類推。
有新思路歡迎留言~~