首页
社区
课程
招聘
3
[讨论]内存隐藏学习总结
发表于: 2014-7-28 18:14 19116

[讨论]内存隐藏学习总结

2014-7-28 18:14
19116

  看雪有很多讲war3全图的例子,还有很多大神讲了思路。比如写os的大神(bitt,还写过2个汉化教程,很赞)最早说的VEH + 硬件断点,现在还能用,问题的关键在于内存隐藏。而关于这一点v校讲过,不过大神的思路(那张图已经很清楚了)需要仔细体会才有收获的。这篇算是这段时间学习笔记吧,还有很多忘了说的和没完成的,就不想弄了。注意看完了基本也不一定能写全图,需要自己调试一下,你懂的
  1, Achillis(似乎叫黑月教主)说过“对付API就用抹链,对付抹链就用暴搜,对付暴搜就把PE头抹了,对付抹PE头就ZwQueryVirtualMemory,对付QueryMemory 就自己做Loader或ReloadandRun然后再抹一抹就只有a piece of code了,但是还是占了一块内存。我在想怎么改VAD把内存 占用也隐藏掉~~”,还说过Load的时候不用CreateFileMapping,二用ReadFile,就不会被PsLoadImageNotifyRoutine发现了。不过似乎还是比较难写的。隐藏的前面几步有个非常好的Jboy的贴子,想不通为什么不加精,,可是是delphi的,可能看的不习惯我改成c了,原理就是Load ,保存一份,Free,把备份的粘贴回来,就断链了,这样做的好处是方便。断链也是可以的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
VOID LockAllModules()
{
  HANDLE hSnapshot = CreateToolhelp32Snapshot(  
    TH32CS_SNAPMODULE, GetCurrentProcessId()); 
 
  if (hSnapshot != INVALID_HANDLE_VALUE) { 
 
    MODULEENTRY32 me = {sizeof(me)};  
    BOOL fOk = Module32First(hSnapshot, &me);  
    for (fOk = Module32Next(hSnapshot, &me); fOk; fOk = Module32Next(hSnapshot, &me)){ //跳过第一个;
      LoadLibrary(me.szModule);
    }
  }
}
 
BOOL CopycatAndHide(HMODULE hDll)
{
  IMAGE_DOS_HEADER * pDosHeader;
  IMAGE_NT_HEADERS * pNtHeader;
  IMAGE_OPTIONAL_HEADER * pOptionalHeader;
  LPVOID lpBackMem = 0;
  DWORD dwOldProtect;
  DWORD dwCount = 30;
 
 
  pDosHeader = (IMAGE_DOS_HEADER *)hDll;
  pNtHeader = (IMAGE_NT_HEADERS *)(pDosHeader->e_lfanew + (DWORD)hDll);
  pOptionalHeader = (IMAGE_OPTIONAL_HEADER *)&pNtHeader->OptionalHeader;
 
  LockAllModules();
 
  lpBackMem = VirtualAlloc(0 ,pOptionalHeader->SizeOfImage ,MEM_COMMIT|MEM_RESERVE ,PAGE_EXECUTE_READWRITE);
  if(!lpBackMem)
    return FALSE;
  if(!VirtualProtect((LPVOID)hDll ,pOptionalHeader->SizeOfImage ,PAGE_EXECUTE_READWRITE ,&dwOldProtect))
    return FALSE;
 
  g_dwImageSize = pOptionalHeader->SizeOfImage;
  memcpy(lpBackMem ,(LPVOID)hDll ,g_dwImageSize );
  memset(lpBackMem , 0 ,0x200);
  *((PBYTE)hDll + pOptionalHeader->AddressOfEntryPoint) = (BYTE)0xc3;
 
  //  DWORD dwRet =0;
  do{
    dwCount --;
  }while(FreeLibrary(hDll) && dwCount);
 
  g_lpNewImage = VirtualAlloc((LPVOID)hDll ,g_dwImageSize ,MEM_COMMIT|MEM_RESERVE ,PAGE_EXECUTE_READWRITE);
  if(g_lpNewImage != (LPVOID)hDll)
    return FALSE;
 
  memcpy(g_lpNewImage , lpBackMem , g_dwImageSize);
  VirtualFree(lpBackMem , 0, MEM_RELEASE);
 
  return TRUE  ;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
typedef ULONG WIN32_PROTECTION_MASK ;
NTSTATUS
  MyNtProtectVirtualMemory(
  __in HANDLE ProcessHandle,
  __inout PVOID *BaseAddress,
  __inout PSIZE_T RegionSize,
  __in WIN32_PROTECTION_MASK NewProtectWin32,
  __out PULONG OldProtect
  )
{
  typedef NTSTATUS
    (* PtrNtProtectVirtualMemory)(
    __in HANDLE ProcessHandle,
    __inout PVOID *BaseAddress,
    __inout PSIZE_T RegionSize,
    __in WIN32_PROTECTION_MASK NewProtectWin32,
    __out PULONG OldProtect
    );
 
  NTSTATUS NtStatus = STATUS_SUCCESS;
  PCHAR ProcessName ;
 
 
  ProcessName = (PCHAR)PsGetProcessImageFileName(PsGetCurrentProcess());
    if(GameModule &&
      (ULONG)GameModule <= (ULONG)BaseAddress &&
      (ULONG)GameModule + GameModuleSize > (ULONG)BaseAddress)
    {  
      if(NewProtectWin32 != PAGE_READONLY)
        return STATUS_SUCCESS;
    }
 
    if(MhDllModule &&
      (ULONG)MhDllModule <= (ULONG)BaseAddress &&
       (ULONG)MhDllModule + MhDllModuleSize > (ULONG)BaseAddress)
    {
  //    return ERROR_INVALID_ADDRESS;
      return 487L;
    }
    if(FakeModule &&
      (ULONG)FakeModule <= (ULONG)BaseAddress &&
      (ULONG)FakeModule + FakeModuleSize > (ULONG)BaseAddress)
    {
       return 487L;
    }
 
  }
   
  if(OldServiceAddressTable[0x0D7])
    NtStatus = ((PtrNtProtectVirtualMemory)OldServiceAddressTable[0x0D7])(ProcessHandle ,BaseAddress ,RegionSize ,NewProtectWin32 ,OldProtect);
   
  return NtStatus;
}

[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费 3
支持
分享
赞赏记录
参与人
雪币
留言
时间
飘零丶
为你点赞~
2024-5-31 03:15
shinratensei
为你点赞~
2024-5-31 02:58
PLEBFE
为你点赞~
2023-3-5 04:09
最新回复 (23)
雪    币: 13934
活跃值: (4931)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这绝对是个广告位。。。。mark
2014-7-28 18:29
0
雪    币: 6997
活跃值: (4989)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
好像很厉害的样子,先回复再细看
2014-7-28 18:54
0
雪    币: 100
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
前排占位,mark
2014-7-28 19:07
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
前排        支持
2014-7-28 19:16
0
雪    币: 3469
活跃值: (1623)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
前排站队~ 不明觉厉
2014-7-28 19:27
0
雪    币: 1228
活跃值: (4646)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
顶下,对本人来说还是有点技术含量的
2014-7-28 20:40
0
雪    币: 43
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看看,支持
2014-7-28 21:04
0
雪    币: 53
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mark
2014-7-28 21:50
0
雪    币: 297
活跃值: (280)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
10
请问v校的截图是啥。。有木有链接
2014-7-29 09:08
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
搜索一下就有了,搜不到再说吧,很好搜的...
2014-7-29 09:13
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
mark 学习
2014-10-12 10:11
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
mark一下~
2014-10-12 17:47
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
mark一下~
2014-10-14 12:39
0
雪    币: 60
活跃值: (459)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
15
不明觉厉
2014-12-1 12:59
0
雪    币: 54
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
mark一下~
2014-12-8 23:56
0
雪    币: 54
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
mark一下~
2014-12-14 17:27
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
BWM
18
我也找不到V校
2014-12-15 22:54
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
很厉害的说。
2014-12-17 16:05
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
学习下,好长哦
2014-12-17 17:35
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
mark 一下
2014-12-19 11:33
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
楼主很厉害,赞一个。
2014-12-19 12:08
0
雪    币: 9
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
看了半天真是一篇**贴
2014-12-23 10:16
0
雪    币: 54
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
mark
2015-2-3 01:18
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册