首页
社区
课程
招聘
[旧帖] [求助]这段代码如何实现的反调试? 0.00雪花
发表于: 2009-10-25 13:41 3561

[旧帖] [求助]这段代码如何实现的反调试? 0.00雪花

2009-10-25 13:41
3561
代码如下:
004B2024    64:A1 30000000  MOV EAX,DWORD PTR FS:[30]
004B202A    8B40 18         MOV EAX,DWORD PTR DS:[EAX+18]
004B202D    8B40 0C         MOV EAX,DWORD PTR DS:[EAX+C]
004B2030    83F8 02         CMP EAX,2
004B2033    74 0E           JE SHORT 1.004B2043
004B2035    C3              RETN

看了里面http://bbs.pediy.com/showthread.php?t=21959关于对fs的解释,可不明白这段代码是怎么实现饭调试的。还有如果代码写成这样为什么程序不能运行呢?
004B2024    64:A1 18000000  MOV EAX,DWORD PTR FS:[18]
004B202A    8B40 30         MOV EAX,DWORD PTR DS:[EAX+30]
004B202D    8B40 0C         MOV EAX,DWORD PTR DS:[EAX+C]
004B2030    83F8 02         CMP EAX,2
004B2033    74 0E           JE SHORT 2.004B2043
004B2035    C3              RETN

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 279
活跃值: (33)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
2.4 FD_Heap_HeapFlags()
同样,调试器也会在堆中留下痕迹,你可以使用kernel32_GetProcessHeap()函数,如果你不希望使用api函数(以免暴露),则可以直接在PEB中寻找。同样的,使用HeapFlags和后面提到的ForceFlags来检测调试器也不是非常可靠,但却很常用。
这个域由一组标志组成,正常情况下,该值应为2。
  __asm
  {
    mov eax, fs:[30h]
    mov eax, [eax+18h] ;PEB.ProcessHeap
    mov eax, [eax+0ch] ;PEB.ProcessHeap.Flags
    cmp eax, 2
    jne rt_label
    jmp rf_label
  }
2009-10-25 14:18
0
雪    币: 177
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢楼上的提供的这些资料,努力学习中。
2009-10-25 19:35
0
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
嗯, 我也顺便学习了下, 谢谢!
2009-10-26 13:35
0
游客
登录 | 注册 方可回帖
返回
//