| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1127 人关注过本帖
标题:借个地方放下代码,研究的话也欢迎 不过没有注解,前提要对PE比较了解
取消只看楼主 加入收藏
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
结帖率:62.07%
收藏
 问题点数:0 回复次数:2 
借个地方放下代码,研究的话也欢迎 不过没有注解,前提要对PE比较了解
.386
.model flat, stdcall
option casemap :none

include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib

    .data
    szcaption      db 'xbn',0
   sztext         db '找到KERNEL32的PE标志!',0
   _lpapi         db 'GetProcAddress',0
   .code
 _getkernelbase proc _dwkernelretaddress
    local @dwret
   
    pushad
    mov @dwret,0
    mov edi,_dwkernelretaddress
    and edi,0ffff0000h
    .repeat
       .if WORD ptr [edi]==IMAGE_DOS_SIGNATURE
              MOV ESI,EDI
              ADD ESI,[ESI+003CH]
              .if WORD ptr [esi]==IMAGE_NT_SIGNATURE
              MOV @dwret,edi
              .break
              .endif
       .endif
     sub edi,10000h
    .break .if edi<70000000h
    .until FALSE
          popad
          mov eax,@dwret
    ret
 _getkernelbase endp
 _getapi proc _dwkernelbase,_lpap1
    local @ret
    pushad
    mov eax,_dwkernelbase
    add eax,[eax+3ch]
    assume eax:ptr IMAGE_NT_HEADERS
    MOV eax,[eax].OptionalHeader.DataDirectory.VirtualAddress
    add eax,_dwkernelbase
    assume eax:ptr IMAGE_EXPORT_DIRECTORY
    MOV ebx,[eax].AddressOfNames
    add ebx,_dwkernelbase
    xor edx,edx
    .repeat
      mov edi,ebx
      mov esi,_lpap1
      mov ecx,sizeof _lpap1
     repz cmpsb
     .if ZERO?
     jmp @F
     .endif
     add ebx,4
     inc edx
    .until edx>=[eax].NumberOfNames
     jmp _ret
    @@:
       shl edx,2
       add ebx,[eax].AddressOfNameOrdinals
       add ebx,_dwkernelbase
       movzx ebx,WORD ptr [ebx]
       shl ebx,2
       add ebx,[eax].AddressOfFunctions
       add ebx,_dwkernelbase
       mov eax,[ebx]
       add eax,_dwkernelbase
       mov @ret,eax
   _ret:
      assume eax:nothing
      popad
      mov eax,@ret
      ret
 _getapi endp
      

start: mov eax,[esp]
       invoke _getkernelbase,eax
       invoke _getapi,eax,addr _lpapi
       ret
end    start
              

[ 本帖最后由 朱三哥 于 2012-12-13 23:43 编辑 ]
搜索更多相关主题的帖子: edi repeat local 
2012-12-13 23:41
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
  这个win32有 printf()这类的东西吗?

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2012-12-13 23:47
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
三哥我总算是透过了病毒的第一部分 了,第二部分正在进行中,病毒的表现模块部分

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2012-12-24 17:10
快速回复:借个地方放下代码,研究的话也欢迎 不过没有注解,前提要对PE比较了解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015491 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved