(3).文件補丁的編寫(xiě)(c語(yǔ)言簡(jiǎn)單實(shí)現)
前面我們把je改成了jne,隨便輸入密碼都可以了,實(shí)質(zhì)是把機器碼由74h改成75h,因為機器碼和匯編指令是一一對應的,那么我們只要寫(xiě)個(gè)小東西,修改就可以了。我已經(jīng)寫(xiě)好了,很短,很好懂。Crack.c,我們分析一下
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *fp_out; //要寫(xiě)入的文件
printf("\n\t\t\t\t Copy Right by ngaut\n");
printf("Cracking......\n");
//打開(kāi)文件test.exe
if ((fp_out = fopen("test.exe", "r+"))==NULL)
{
printf("error!!! Can not open test.exe!!!\n\n");
printf("Press any key to continue\n");
getchar();
exit(0);
}
//定位到要修改的地方,這里是 0x203f,為什么呢?下面給出回答
fseek(fp_out, 0x203f, SEEK_SET);
fputc(0x75, fp_out); //寫(xiě)入數據0x75,也就是把機器碼74改為75,
//匯編則是 je 改為了jne
fclose(fp_out);