飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 16265|回复: 37

DLL外挂型内存补丁的实现

[复制链接]

该用户从未签到

发表于 2007-8-21 15:41:38 | 显示全部楼层 |阅读模式
DLL外挂型内存补丁的实现:

思路:自己写个DLL文件PYG.DLL 输出函数K ,找个程序需要调用DLL文件(我用的LPK.DLL,基本上可执行程序都要用到).用PE工具填加
         输入表PYG.DLL  函数K,然后把PYG.DLL和LPK.DLL   COPY到要破解的程序目录.这样程序调用LPK.DLL 就会加载PYG.DLL来执行
         修改内存的目的.

例子: 例子.rar (25.74 KB, 下载次数: 264)


DLL部分:

  1. library pyg;

  2. { Important note about DLL memory management: ShareMem must be the
  3.   first unit in your library's USES clause AND your project's (select
  4.   Project-View Source) USES clause if your DLL exports any procedures or
  5.   functions that pass strings as parameters or function results. This
  6.   applies to all strings passed to and from your DLL--even those that
  7.   are nested in records and classes. ShareMem is the interface unit to
  8.   the BORLNDMM.DLL shared memory manager, which must be deployed along
  9.   with your DLL. To avoid using BORLNDMM.DLL, pass string information
  10.   using PChar or ShortString parameters. }

  11. uses
  12.   windows,
  13.   TlHelp32,
  14.   Unit1 in 'Unit1.pas';

  15. var
  16. Pn: TProcesseNtry32;

  17. {$R *.res}
  18. procedure k;stdcall;
  19. begin
  20. end;



  21. procedure MyDLLProc;stdcall;
  22. var
  23. hHandle:HWND;
  24. begin
  25. hHandle:=pn.th32ParentProcessID;
  26. //HookOn(hHandle,0);
  27. HookOn(hHandle,WH_shell); //安装钩子
  28. end;
  29. exports
  30.   k;

  31. begin
  32. DLLProc:=@MyDLLProc;
  33. MyDLLProc;
  34. end.
复制代码


修改内存模块:

  1. unit Unit1;

  2. interface
  3. uses
  4. windows;



  5. var
  6. hHk: HHOOK=0;
  7. mhwnd:HWND=0;
  8. hThread: Cardinal;
  9. hmod: Pointer; //Hinstance


  10. procedure HookProc;stdcall;
  11. function HookOn(lpHwnd:HWND;lpType:Longint): Longint;stdcall;
  12. function HookOff:Boolean;stdcall;

  13. implementation

  14. function HookOn(lpHwnd:HWND;lpType:Longint): Longint;stdcall; export;
  15. begin
  16. mhwnd:=lpHwnd;
  17. if hHk<>0 then UnHookWindowsHookEx(hHk);
  18. hThread :=GetWindowThreadProcessId(mhwnd,hmod);
  19. hHk :=SetWindowsHookEx(lpType,@HookProc,hInstance,hThread); // WH_KEYBOARD
  20. Result :=hHk;
  21. end;

  22. procedure ModMemData();
  23. var
  24.   pData: pointer;
  25.   dwOldProtect:DWORD;
  26.   mbi_thunk: TMemoryBasicInformation;

  27. begin

  28.   pData := pointer($004024e0);
  29.   //查询页信息。
  30.   VirtualQuery(pData, mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION));
  31.   //改变页保护属性为读写。
  32.   VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize,PAGE_READWRITE, mbi_thunk.Protect);

  33. end;


  34. procedure HookProc;stdcall;
  35. var
  36.   ljj:pchar;
  37.   ljj2:string;
  38.   DLLHandle: THandle;
  39. begin

  40. try
  41. begin
  42.     asm
  43.     pushad
  44.     pushfd
  45.     mov eax,$004024e0
  46.     mov edx,$358b6674
  47.     cmp [eax],edx
  48.     jne @@11
  49.     push eax
  50.     call ModMemData;
  51.     pop eax
  52.     mov edx,$358b9090
  53.     mov [eax],edx
  54.     @@11:
  55.     popfd
  56.     popad
  57.     end;
  58. end;
  59. except
  60. begin
  61.      asm
  62.      popfd
  63.      popad
  64.      end;
  65. end;
  66. end;
  67. HookOff;     //卸载钩子
  68. end;


  69. function HookOff:Boolean;stdcall;
  70. begin
  71. if hHk<>0 then
  72. begin
  73. UnHookWindowsHookEx(hHk);
  74. hHk :=0;
  75. Result :=true;
  76. end
  77. else
  78. Result :=false;
  79. end;




  80. end.
复制代码

评分

参与人数 2威望 +9 飘云币 +21 收起 理由
Anewbie + 1 + 1 PYG有你更精彩!
不懂破解 + 8 + 20 PYG有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

PYG19周年生日快乐!

该用户从未签到

发表于 2007-8-23 15:26:20 | 显示全部楼层
学习,修改DLL导入表,导入新DLL,这个想法/:good 。。。。。
004024e0是要修改软件的指令地址吗?358b6674是指令二进制代码吧。
PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 18:20
  • 签到天数: 2320 天

    [LV.Master]伴坛终老

    发表于 2007-8-23 20:31:54 | 显示全部楼层
    不错的例子.收藏了 感谢~/:001
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-1-13 12:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2007-8-23 20:58:21 | 显示全部楼层
    学习:loveliness: 超强
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-8-24 00:02:56 | 显示全部楼层
    /:L

    这个真的是强悍
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2019-7-5 06:17
  • 签到天数: 97 天

    [LV.6]常住居民II

    发表于 2007-8-26 02:39:54 | 显示全部楼层
    很好的例程阿!学习
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-8-28 23:46:15 | 显示全部楼层

    学习做外挂 实用

    顶起   /:014 /:014 /:014
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2018-2-10 09:25
  • 签到天数: 119 天

    [LV.6]常住居民II

    发表于 2007-10-24 09:08:18 | 显示全部楼层
    这个东西不错,可以躲过内存校验
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-4-6 10:07
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    发表于 2007-10-24 17:01:43 | 显示全部楼层
    感谢楼主分享,不错的代码
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-3-6 21:16:31 | 显示全部楼层
    谢谢楼主,非常好的东西
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表