注册 登录
编程论坛 汇编论坛

借个地方放下代码,研究的话也欢迎 不过没有注解,前提要对PE比较了解

朱三哥 发布于 2012-12-13 23:41, 1144 次点击
.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 编辑 ]
11 回复
#2
朱三哥2012-12-13 23:47
  这个win32有 printf()这类的东西吗?
#3
wp2319572012-12-14 09:20
以下是引用朱三哥在2012-12-13 23:47:04的发言:

  这个win32有 printf()这类的东西吗?
可以写cui也可以写gui
#4
x64asm2012-12-15 19:10
阁下竟敢暴力搜索内存获取KERNEL32基地址和GetProcAddress地址,
看来阁下是灰色产业联盟的成员,毋庸置疑。
#5
suijishu2012-12-15 21:44
以下是引用x64asm在2012-12-15 19:10:03的发言:

阁下竟敢暴力搜索内存获取KERNEL32基地址和GetProcAddress地址,
看来阁下是灰色产业联盟的成员,毋庸置疑。
那你说怎么弄啊,大牛!!!
#6
x64asm2012-12-15 23:01
哈哈,PEB获取之
#7
有容就大2012-12-15 23:05
哇 好厉害

不过俺现在没精力搞了 猪兄你抗起来
#8
suijishu2012-12-16 01:19
以下是引用x64asm在2012-12-15 23:01:53的发言:

哈哈,PEB获取之
膜拜大牛!!!你是我除了膜拜zklhp之外的第2个大牛!!!
#9
水哥2012-12-16 22:38
暴力索内存到WIN7下没用了,不通用还是x64asm牛说的对PEB才是正理。
#10
x64asm2012-12-17 16:33
连SEH都没设置,竟敢暴力搜索。哈哈。
#11
朱三哥2012-12-24 17:10
三哥我总算是透过了病毒的第一部分 了,第二部分正在进行中,病毒的表现模块部分
#12
Alar302012-12-27 12:58
话说
俺是纯粹来围观的哈。。。
1