-
-
[求助]关于远程线程的问题
-
发表于: 2008-5-13 22:06 2975
-
本人想通过修改老罗的程序来实现远程线程,可是实验发现我的程序执行不了,一执行就弹出一个数据保护的对话框,经检查发现是因为下面这段代码还没搞懂,我想问一下假如我想写一个象病毒之类能在后台悄悄运行的程序,我总觉得只需修改RemoteCode.asm就行了,不知道是不是这样?我看来看去总觉得是这样,可是象下面这样写总是不行,如果我想的没错, 那么下面这段代码该如何修改?偶愚蠢,看不懂,请高手相助
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming 2nd Edition>
; by 罗云彬, http://asm.yeah.net
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; RemoteCode.asm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
REMOTE_CODE_START equ this byte
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_lpLoadLibrary dd ? ;导入函数地址表
_lpGetProcAddress dd ?
_lpGetModuleHandle dd ?
_lpSystemTime dd ?
_stSystemTime SYSTEMTIME <>
_hInstance dd ?
_szDllUser db 'User32.dll',0
_lpGetLocalTime dd ?
_lpSetLocalTime dd ?
_szGetLocalTime db 'GetLocalTime',0
_szSetLocalTime db 'SetLocalTime',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 _szGetLocalTime]
lea edi,[ebx + offset _lpGetLocalTime]
.while TRUE
_invoke [ebx + _lpGetProcAddress],@hModule,esi
mov [edi],eax
add edi,4
@@:
lodsb
or al,al
jnz @B
.break .if ! byte ptr [esi]
.endw
;********************************************************************
call _Time
ret
_RemoteThread endp
;修改时间******************************************************
_Time proc uses ebx edi esi lParam
call @F
@@:
pop ebx
sub ebx,offset @B
mov eax,[ebx+offset _stSystemTime]
mov [ebx+_lpSystemTime],eax
lea eax,[ebx+_lpSystemTime]
_invoke [ebx+_lpGetLocalTime],eax
mov eax,2007
mov [ebx+_stSystemTime.wYear],ax
lea eax,[ebx+_lpSystemTime]
_invoke [ebx+_lpSetLocalTime],eax
;_invoke Sleep,8000
ret
_Time endp
;****************************************************************
REMOTE_CODE_END equ this byte
REMOTE_CODE_LENGTH equ offset REMOTE_CODE_END - offset
REMOTE_CODE_START
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming 2nd Edition>
; by 罗云彬, http://asm.yeah.net
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; RemoteCode.asm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
REMOTE_CODE_START equ this byte
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_lpLoadLibrary dd ? ;导入函数地址表
_lpGetProcAddress dd ?
_lpGetModuleHandle dd ?
_lpSystemTime dd ?
_stSystemTime SYSTEMTIME <>
_hInstance dd ?
_szDllUser db 'User32.dll',0
_lpGetLocalTime dd ?
_lpSetLocalTime dd ?
_szGetLocalTime db 'GetLocalTime',0
_szSetLocalTime db 'SetLocalTime',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 _szGetLocalTime]
lea edi,[ebx + offset _lpGetLocalTime]
.while TRUE
_invoke [ebx + _lpGetProcAddress],@hModule,esi
mov [edi],eax
add edi,4
@@:
lodsb
or al,al
jnz @B
.break .if ! byte ptr [esi]
.endw
;********************************************************************
call _Time
ret
_RemoteThread endp
;修改时间******************************************************
_Time proc uses ebx edi esi lParam
call @F
@@:
pop ebx
sub ebx,offset @B
mov eax,[ebx+offset _stSystemTime]
mov [ebx+_lpSystemTime],eax
lea eax,[ebx+_lpSystemTime]
_invoke [ebx+_lpGetLocalTime],eax
mov eax,2007
mov [ebx+_stSystemTime.wYear],ax
lea eax,[ebx+_lpSystemTime]
_invoke [ebx+_lpSetLocalTime],eax
;_invoke Sleep,8000
ret
_Time endp
;****************************************************************
REMOTE_CODE_END equ this byte
REMOTE_CODE_LENGTH equ offset REMOTE_CODE_END - offset
REMOTE_CODE_START
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
赞赏
他的文章
- [求助]怪事呀,到底谁在作怪? 2203
- [求助]怎么清除这种病毒,好像是rootkit 4095
- [讨论]这样是不是也算实现了自删除 5031
- [分享]C语言中很多人不知道的小知识 4976
看原图
赞赏
雪币:
留言: