首页
社区
课程
招聘
[旧帖] [求助]关于罗云杉老师的RemoteCode.asm中数据位置的问题 0.00雪花
发表于: 2009-8-29 07:48 1327

[旧帖] [求助]关于罗云杉老师的RemoteCode.asm中数据位置的问题 0.00雪花

2009-8-29 07:48
1327
(1)在RemoteCode中主要描述了代码的重定向,如果我把_szDllUser放在_szDispatchMessage字符串之后,会出现窗口无法打开的现象,如果放在_szCaptionMain之后一切正常,
(2)最主要的是不知道远程线程应该如何调试,指点一下,谢谢

下面仅贴错误代码:
_lpLoadLibrary                dd        ?
_lpGetProcAddress                        dd        ?
_lpGetModuleHandle        dd        ?

_lpDestroyWindow                        dd        ?
_lpPostQuitMessage        dd        ?
_lpDefWindowProc                        dd        ?
_lpLoadCursor                dd        ?
_lpRegisterClassEx                        dd        ?
_lpCreateWindowEx        dd        ?
_lpShowWindow                dd        ?
_lpUpdateWindow                dd        ?
_lpGetMessage                dd        ?
_lpTranslateMessage        dd        ?
_lpDispatchMessage        dd        ?

_hInstance                dd        ?
_hWinMain                dd        ?
_szClassName                db        'RemoteClass', 0
_szCaptionMain                db        'RemoteWindow', 0
_szDestroyWindow                        db         'DestroyWindow', 0
_szPostQuitMessage        db        'PostQuitMessage', 0
_szDefWindowProc                        db        'DefWindowProcA', 0
_szLoadCursor                db        'LoadCursorA', 0
_szRegisterClassEx                        db        'RegisterClassExA', 0
_szCreateWindowEx        db        'CreateWindowExA', 0
_szShowWindow                db        'ShowWindow', 0
_szUpdateWindow                db        'UpdateWindow', 0
_szGetMessage                db        'GetMessageA', 0
_szTranslateMessage        db        'TranslateMessage', 0
_szDispatchMessage        db        'DispatchMessageA', 0, 0
_szDllUser                db        'User32.dll', 0

_RemoteThread        proc uses ebx edi esi, lParam
        local        @hModule
        call        @F
        @@:
        pop                ebx
        sub                ebx, offset @B                ;
        ;<--------------------------------------------------------->
        _invoke        [ebx + _lpGetModuleHandle], NULL
        mov                [ebx + _hInstance], eax
        lea                eax, [ebx + offset _szDllUser]
        _invoke        [ebx + _lpGetModuleHandle], eax
        mov                @hModule, eax
        lea                esi, [ebx + offset _szDestroyWindow]
        lea                edi, [ebx + offset _lpDestroyWindow]
        .while        TRUE
                _invoke        [ebx + _lpGetProcAddress], @hModule, esi
                mov        [edi], eax
                add        edi, 4
                @@:
                lodsb
                or        al, al
                jnz        @B
                .break        .if        ! byte ptr [esi + 1]
        .endw

        ;<----------------------------------------------------------->
        call        _WinMain
        ret
_RemoteThread endp

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
2
可能是其他地方出问题了 放_szDispatchMessage字符串之后也一样的



简单的办法就是在call @F前面加个INT 3
2009-8-29 18:49
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
说错了,是把_szDllUser放在_szDispatchMessage之前,这个我验证了的,
函数通过这段顺序查找系统调用函数在进程中的地址
lea    esi, [ebx + offset _szDestroyWindow]
  lea    edi, [ebx + offset _lpDestroyWindow]
  .while  TRUE
    _invoke  [ebx + _lpGetProcAddress], @hModule, esi
    mov  [edi], eax
    add  edi, 4
    @@:
    lodsb
    or  al, al               
    jnz  @B                                    ------------------------|
    .break  .if  ! byte ptr [esi + 1]  ------------------------|-----------连续碰见2个0则退出循环
.endw
2009-8-31 07:45
0
游客
登录 | 注册 方可回帖
返回
//