转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
防止用DeDe软件反编译delphi程序         ★★★★

防止用DeDe软件反编译delphi程序

作者:闵涛 文章来源:闵涛的学习笔记 点击数:657 更新时间:2009/4/23 18:37:42

防止用DeDe软件反编译delphi程序
这里有一篇防止用DeDe软件反编译delphi程序~
用『』里的是我的注释,其余的是原创作~

Program Project1;

Uses
  Forms,
  windows,
  sysutils,
  Unit1 In ''''Unit1.pas'''' {Form1},
  Unit2 In ''''Unit2.pas'''' {Form2};

Function RegisterServiceProcess(dwProcessId, dwType: dword): Integer; Stdcall;
  External ''''kernel32.dll''''
{$R *.RES}
Var
  HMUTEX: HWND;
  RET: INTEGER;
  hCurrentWindow: HWnd; //反编译要的
  szText: Array[0..254] Of char; //反编译要的
Begin
  Application.Initialize;
  APPLICATION.TITLE := ''''delphi葵花宝典 设计:张国鹏'''';
  RegisterServiceProcess(GetCurrentProcessID, 1); //让程序在Ctl+Alt+Del中消失.

    『我们可以看到作者用RegisterServiceProcess把程序注册成了WINDOWS服务程序~』
    『但大家都知道这个函数包含在kernel32里,而且只在98/ME中管用~』
    『所以并不要把这项作为反编译的关键,可以说可有可无~』

  //防止反编译开始
  hCurrentWindow := GetWindow(APPLICATION.Handle, GW_HWNDFIRST);

    『由上面知道作者想知道自己的程序窗口是不是最顶级的窗口』

  While hCurrentWindow <> 0 Do
  Begin
    If GetWindowText(hCurrentWindow, @szText, 255) > 0 Then
      If pos(''''DeDe'''', StrPas(@szText)) <> 0 Then

     『如果不是,则获取现在顶机窗体的标题,在做判断是不是"DeDe"』

      Begin
        APPLICATION.MESSAGEBOX(''''想反编译我?没那么容易!'''',
          ''''哈哈......你这家伙!'''', mb_ok);
        //closewindow(hCurrentWindow);//使该程序窗口最小化
        enablewindow(hCurrentWindow, false);
        //使该程序的窗口不能被激活 如果能获取该程序的线程ID号,则可以使该程序又不能使用,又不能关闭,酷吧?

                『以上这两句是对DEDE的处理~』
                『closewindow:为把制定的窗口最小化,但窗口不会从内存中清除~』
                『enablewindow:指定的窗口里允许/禁止所鼠标和键盘的输入,false肯定是不能了~』

        halt;
      End;
    hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
  End;
  //防止反编译结束
  //防止程序的二次运行
  HMUTEX := CREATEMUTEX(Nil, FALSE, ''''delphi葵花宝典 设计:张国鹏'''');
  RET := GETLASTERROR;
  If RET <> ERROR_ALREADY_EXISTS Then
  Begin
    Application.CreateForm(TForm1, Form1);
    // Application.CreateForm(TForm2, Form2);
    Application.Run;
  End
  Else
    APPLICATION.MESSAGEBOX(''''程序已经运行!'''', ''''提示'''', mb_ok);
  releasemutex(hmutex);

End.

『谈谈我的看法,这种方法也许是一种简单的防止反编译的做法,但由于过于简单了,』
『到现在就不是很有用了,也许可以对付一些初学的朋友,我们可以看到查找窗口的名』
『字为"DEDE"也就是说它只是一个字符串,在程序中没有很重要的地位,也就是不耽误』
『程序的运行,我们可以借助一些软件把程序中所有的"DEDE"改为别的字符,呵呵,这』
『程序可是没有逻辑思维的,改后可就对"DEDE"没有办法了^_^~~~~~~』


[系统软件]InstallShield Express for delphi制作安装程序定…  [常用软件]InstallShield Express制作Delphi数据库安装程序
[Delphi程序]为什么选择Delphi.Net ?  [Delphi程序]《关于VisiBroker For Delphi的使用》(4)
[Delphi程序]Delphi 程序员代码编写标准指南  [Delphi程序]转贴:Conversion to Delphi 6: Missing unit Pro…
[Delphi程序]Borland Delphi 9 的新特性  [Delphi程序]Delphi 键盘码表
[Delphi程序]Chuck Jazdzewski的离开意味着Delphi的终结吗?  [Delphi程序]Delphi Access violations 问题的解决之道
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台