moonYut
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2006-12-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望138点
  • 贡献值17点
  • 好评度117点
  • 原创分0分
  • 专家分0分
阅读:1964回复:2

请教

楼主#
更多 发布于:2005-04-23 09:44
;********************************************************************
; 查找 Kernel32.dll 的基地址
;********************************************************************
  mov edi,_dwKernelRet
  and edi,0ffff0000h;     我不太明白这句的意思,和下面突然的得到了IMAGE_DOS_SIGNATURE

.while TRUE
   .if word ptr [edi] == IMAGE_DOS_SIGNATURE
    mov esi,edi
    add esi,[esi+003ch]
    .if word ptr [esi] == IMAGE_NT_SIGNATURE
     mov @dwReturn,edi
     .break
    .endif 
   .endif
   _PageError:
   sub edi,010000h
   .break .if edi < 070000000h
  .endw
刚则折,柔恒存,柔羽胜刚强! 万法自然,无根无极!--太极
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-05-12 12:07
代码有些问题,这个方法就是
就是暴力搜索,最开始_dwKernelRet是在kernel32中的一个地址,应该是and edi,0fffff000h,源代码,多了一个0,按照4k对齐,因为pe头肯定加载在4k对齐的地址上,从高地址往低地址搜索,找到kernel32的pe头,每次
sub edi,01000h,源代码还是多了一个0,减少4k,为的是加快搜索速度


moonYut
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2006-12-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望138点
  • 贡献值17点
  • 好评度117点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-12 12:08
谢谢,问题我早解决了!
刚则折,柔恒存,柔羽胜刚强! 万法自然,无根无极!--太极
游客

返回顶部