首页
社区
课程
招聘
[求助]求几个delphi 隐藏DLL的源码学习 希望能在看雪有一个好的开始
发表于: 2016-5-18 14:38 4321

[求助]求几个delphi 隐藏DLL的源码学习 希望能在看雪有一个好的开始

2016-5-18 14:38
4321
【求助】求几个delphi 隐藏DLL的源码学习 希望能在看雪有一个好的开始

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 15
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
主要这个语言的资料太少了,想学习下隐藏DLL的技术,希望论坛的哥哥们能给我指点下明路·
2016-5-18 14:42
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
论坛C代码有很多    delphi 跟C相通      自己稍微改改就能用。
不过建议还是转C吧   其他语言很难长久   只要还在编程的  最终归宿都是C
2016-5-18 15:31
0
雪    币: 15
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
   可惜我是新手看不懂C  哎````
2016-5-18 21:01
0
雪    币: 135
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Windows这系统,90%都是C写的 , 你说该不该下苦功夫学习呢!!!!
2016-5-18 22:45
0
雪    币: 15
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好的呢,我感觉C才是主流 ····
2016-5-18 23:59
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
语言  都是相通的 能看懂DELPHI   稍下功夫 就能看懂C
2016-5-19 13:17
0
雪    币: 150
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
function HideDll(const dllname: PChar):HMODULE;
  var
    hMod: HMODULE;
    Head, Cur: PListEntry;
    ldr: PPEB_LDR_DATA;
    ldm: PLDR_MODULE;
  begin
    hMod := GetModuleHandle(dllname);
    if hMod <= 0 then
      begin
        exit;
      end;
    asm
      mov eax, fs:[30h]
      mov ecx, [eax + 0Ch]
      mov ldr, ecx
    end;
    Head := @ldr^.InLoadOrderModuleList;
    Cur := Head^.Flink;
    repeat
      ldm := PLDR_MODULE(Cur);
      ldm := PLDR_MODULE(DWORD(Cur) - DWORD(@PLDR_MODULE(0)^.InLoadOrderModuleList));
      if (hMod = DWORD(ldm^.BaseAddress)) then
        begin
          ldm^.InLoadOrderModuleList.Blink^.Flink := ldm^.InLoadOrderModuleList.Flink;
          ldm^.InLoadOrderModuleList.Flink^.Blink := ldm^.InLoadOrderModuleList.Blink;
          ldm^.InInitializationOrderModuleList.Blink^.Flink := ldm^.InInitializationOrderModuleList.Flink;
          ldm^.InInitializationOrderModuleList.Flink^.Blink := ldm^.InInitializationOrderModuleList.Blink;
          ldm^.InMemoryOrderModuleList.Blink^.Flink := ldm^.InMemoryOrderModuleList.Flink;
          ldm^.InMemoryOrderModuleList.Flink^.Blink := ldm^.InMemoryOrderModuleList.Blink;
          Break;
        end;
        Cur := Cur^.Flink;
    until (Head = Cur);
    Result := hMod;
end;
2016-5-20 10:34
0
雪    币: 115
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
这只是断链, 用xuetr还是能看到模块
2016-5-21 12:38
0
雪    币: 19
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主这是要做外挂吧.

推荐你一个方法 内存映射
好好看看 loadlibrary的实现过程以及PE结构
2016-5-23 14:03
0
雪    币: 96
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我给楼主一个思路吧,如果有疑问可以加我QQ290600784交流
{ 申请内存以备份原始模块数据 }

{ 修改原始内存为可读写属性 }

{ 备份原始模块数据 }

{ 修改原DllEntryPoint为retn,防止FreeLibrary时的一些卸载操作 }

{ 申请dll原始加载地址空间 }

{ 写回原始数据 }

{ 释放备份时用的内存 }
2016-5-24 20:58
0
游客
登录 | 注册 方可回帖
返回
//