pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2002-06-27 20:50
我发现4K的条速度还是不快,可是比以前快了!
你是用VC写的吗?我发现如果不用汇编级调试是不可能通过的!用
VC不适合写这东西!它是用寄存器变量的,异常处理修改地址内容是不行的!非得找出变量使用的寄存器,修改掉才行!不然就进入死循环了
------------------------------------------------------------------------------------------
呵呵,你希望的块是多快?我搜2G空间几秒而已。
你是搜本进程空间的话,可先分配一个Buffer,memcpy4K的内容后在buffer里找你要的东西。copy失败就下一个4K...
VC写这东西没什么不好呀.
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2002-06-27 21:08
我搜2G空间几秒而已
------------------------------------------------------------------------
夸张了一点,呵呵。这么快是因为没做额外的事情
流氓兔
驱动老牛
驱动老牛
  • 注册日期2001-06-27
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2002-06-27 21:38
啊!我知道了你没有用异常处理呀!!写病毒我看行不通吧!!如果用API ReadProcessMemory也行,金山游侠就用这个!!
用异常可慢了!!一般是几M/秒吧!!可能是偶的机子慢了点吧!! :D :D
我是流氓!!!我怕谁!!! 不!!应该是我是老流氓!!!我怕谁!!![img]http://202.98.116.70:888/cgi-bin/newmov/bbs/attachment.cgi?forum=4&topic=25473&postno=1&type=.jpg[/img]
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2002-06-28 08:29
我知道了你没有用异常处理呀
------------------------------------------------------------------------------
怎么可能呀,当然用了。API倒是没用
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
24楼#
发布于:2002-06-28 20:01
下面的例子是直接搜索KERNEL32。DLL的地址,用SEH不过对于汇编来说无所谓,只要2秒即可。
.586
.model flat, stdcall
option casemap :none  ; case sensitive
include \\masm32\\include\\windows.inc
include \\masm32\\include\\kernel32.inc
include \\masm32\\include\\user32.inc
includelib \\masm32\\lib\\kernel32.lib
includelib \\masm32\\lib\\user32.lib
;---------------------------------下面是上面用到的宏,我的mac.h比较长,就不贴了-----
    ddd    MACRO Text                        ;define data in .data section
        local name                  ;This and other can be used as: ddd(\"My god!\")
        .data                  ;isn\'t cool?
            name    db Text,0
        .code
        EXITM <addr name>  
    ENDM

  CTEXT MACRO y:VARARG                    ;This is a good macro
        LOCAL sym
    CONST segment
        IFIDNI <y>,<>
            sym db 0
        ELSE
            sym db y,0
        ENDIF
    CONST ends
        EXITM <OFFSET sym>
    ENDM

    m2m MACRO M1, M2                          ;mov is too boring sometimes!
      push M2
      pop  M1
    ENDM
  
;;--------------
per_xHandler        proto C :DWORD,:DWORD,:DWORD,:DWORD

.data
sztit  db \"Search Kernel Address\",0
AddrKernel32 dd ?
aKernel32 db \'Kernel32.dll的地址是:%x\',0
text db 100 dup(?)

;;-----------------------------------------
    .CODE
_Start:
        ;--------------------------
        ;install xhnadler
        ;-----------------------------------------
assume  fs:nothing
        push    offset per_xHandler
        push    fs:[0]
        mov    fs:[0],esp

mov edi,7fff0000h
Next:
        add edi,10000h
cmp edi,0ffff0000h
jnb Exit
assume edi:ptr IMAGE_DOS_HEADER
        cmp [edi].e_magic,IMAGE_DOS_SIGNATURE
jnz Next
mov esi,edi
assume esi:ptr IMAGE_DOS_HEADER
        add esi, [esi].e_lfanew
assume esi:ptr IMAGE_NT_HEADERS
        cmp [esi].Signature,IMAGE_NT_SIGNATURE
jnz Next
add esi,4      ;esi指向IMAGE_FILEHEADER
assume esi:ptr IMAGE_FILE_HEADER
        test [esi].Characteristics,2000h
jz Next       ;不是DLL文件
add esi,14h
add esi,60h    ;ESI指向EXPORT TABLE
mov esi,dword ptr[esi] ;ESI指向IMAGE-EXPORT-DIRECTORY
add esi,edi
add esi,4*3;指向DLL名字的指针
mov esi,dword ptr[esi]
add esi,edi
cmp dword ptr[esi],4e52454bh
jnz Next
        mov AddrKernel32,edi
invoke wsprintf,addr text,addr aKernel32,AddrKernel32
invoke MessageBoxA,0,addr text,addr sztit,MB_OK

        ;--------------------------
        ;uninstall xhnadler
        ;-----------------------------------------
    Exit:  
    pop fs:[0]
    add esp,4
    invoke    ExitProcess,0
;-----------------------------------------        
;异常处理句柄1,处理除法异常错误
per_xHandler PROC C pExcept:DWORD,pFrame:DWORD,pContext:DWORD,pDispatch:DWORD
        pushad
        MOV    ESI,pExcept
MOV    EDI,pContext
ASSUME  ESI:PTR EXCEPTION_RECORD
ASSUME  EDI:PTR CONTEXT
        TEST    [ESI].ExceptionFlags,1
        JNZ    @cantdo1
        TEST    [ESI].ExceptionFlags,6
        JNZ    @unwind1
        CMP    [ESI].ExceptionCode,0c0000005H
        JNZ    @cantdo1

        add  [edi].regEdi,10000h
        POPAD
    MOV  EAX, ExceptionContinueExecution
        RET

@unwind1:
        invoke    MessageBox,0,CTEXT(\"state: unwinding in xhandler1...\"),addr sztit,0
@cantdo1:
        POPAD
        MOV    EAX,ExceptionContinueSearch
    RET
per_xHandler ENDP
end _Start
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
流氓兔
驱动老牛
驱动老牛
  • 注册日期2001-06-27
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2002-07-01 20:03
我知道了你没有用异常处理呀
------------------------------------------------------------------------------
怎么可能呀,当然用了。API倒是没用

用了异常还COPY赶啥,直接搜索不是来得快点吗?

我是流氓!!!我怕谁!!! 不!!应该是我是老流氓!!!我怕谁!!![img]http://202.98.116.70:888/cgi-bin/newmov/bbs/attachment.cgi?forum=4&topic=25473&postno=1&type=.jpg[/img]
流氓兔
驱动老牛
驱动老牛
  • 注册日期2001-06-27
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2002-07-01 20:09
下面的例子是直接搜索KERNEL32。DLL的地址,用SEH不过对于汇编来说无所谓,只要2秒即可。
.586
.model flat, stdcall
option casemap :none  ; case sensitive
include \\masm32\\include\\windows.inc
include \\masm32\\include\\kernel32.inc
include \\masm32\\include\\user32.inc
includelib \\masm32\\lib\\kernel32.lib
includelib \\masm32\\lib\\user32.lib
;---------------------------------下面是上面用到的宏,我的mac.h比较长,就不贴了-----
    ddd    MACRO Text                        ;define data in .data section
        local name                  ;This and other can be used as: ddd(\"My god!\")
        .data                  ;isn\'t cool?
            name    db Text,0
        .code
        EXITM <addr name>  
    ENDM

  CTEXT MACRO y:VARARG                    ;This is a good macro
        LOCAL sym
    CONST segment
        IFIDNI <y>,<>
            sym db 0
        ELSE
            sym db y,0
        ENDIF
    CONST ends
        EXITM <OFFSET sym>
    ENDM

    m2m MACRO M1, M2                          ;mov is too boring sometimes!
      push M2
      pop  M1
    ENDM
  
;;--------------
per_xHandler        proto C :DWORD,:DWORD,:DWORD,:DWORD

.data
sztit  db \"Search Kernel Address\",0
AddrKernel32 dd ?
aKernel32 db \'Kernel32.dll的地址是:%x\',0
text db 100 dup(?)

;;-----------------------------------------
    .CODE
_Start:
        ;--------------------------
        ;install xhnadler
        ;-----------------------------------------
assume  fs:nothing
        push    offset per_xHandler
        push    fs:[0]
        mov    fs:[0],esp

mov edi,7fff0000h
Next:
        add edi,10000h
cmp edi,0ffff0000h
jnb Exit
assume edi:ptr IMAGE_DOS_HEADER
        cmp [edi].e_magic,IMAGE_DOS_SIGNATURE
jnz Next
mov esi,edi
assume esi:ptr IMAGE_DOS_HEADER
        add esi, [esi].e_lfanew
assume esi:ptr IMAGE_NT_HEADERS
        cmp [esi].Signature,IMAGE_NT_SIGNATURE
jnz Next
add esi,4      ;esi指向IMAGE_FILEHEADER
assume esi:ptr IMAGE_FILE_HEADER
        test [esi].Characteristics,2000h
jz Next       ;不是DLL文件
add esi,14h
add esi,60h    ;ESI指向EXPORT TABLE
mov esi,dword ptr[esi] ;ESI指向IMAGE-EXPORT-DIRECTORY
add esi,edi
add esi,4*3;指向DLL名字的指针
mov esi,dword ptr[esi]
add esi,edi
cmp dword ptr[esi],4e52454bh
jnz Next
        mov AddrKernel32,edi
invoke wsprintf,addr text,addr aKernel32,AddrKernel32
invoke MessageBoxA,0,addr text,addr sztit,MB_OK

        ;--------------------------
        ;uninstall xhnadler
        ;-----------------------------------------
    Exit:  
    pop fs:[0]
    add esp,4
    invoke    ExitProcess,0
;-----------------------------------------        
;异常处理句柄1,处理除法异常错误
per_xHandler PROC C pExcept:DWORD,pFrame:DWORD,pContext:DWORD,pDispatch:DWORD
        pushad
        MOV    ESI,pExcept
MOV    EDI,pContext
ASSUME  ESI:PTR EXCEPTION_RECORD
ASSUME  EDI:PTR CONTEXT
        TEST    [ESI].ExceptionFlags,1
        JNZ    @cantdo1
        TEST    [ESI].ExceptionFlags,6
        JNZ    @unwind1
        CMP    [ESI].ExceptionCode,0c0000005H
        JNZ    @cantdo1

        add  [edi].regEdi,10000h
        POPAD
    MOV  EAX, ExceptionContinueExecution
        RET

@unwind1:
        invoke    MessageBox,0,CTEXT(\"state: unwinding in xhandler1...\"),addr sztit,0
@cantdo1:
        POPAD
        MOV    EAX,ExceptionContinueSearch
    RET
per_xHandler ENDP
end _Start


非常感谢你的回复!!!
我是流氓!!!我怕谁!!! 不!!应该是我是老流氓!!!我怕谁!!![img]http://202.98.116.70:888/cgi-bin/newmov/bbs/attachment.cgi?forum=4&topic=25473&postno=1&type=.jpg[/img]
上一页 下一页
游客

返回顶部