Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > CreateRemoteThread problem


Автор: DeHunter 24.2.2005, 19:41
Код

;.... Всевозможные инклуды и вариаблы покусаны ....;
jmp code_injection
;<<<<<<<<<<<<<<<<<<<<<<<<<<<< AHTUNG. HEARE CODE THA WILL BE INJECTED TO EXPLOER >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
start_inject_code :
mov eax, offset end_importz
sub eax, offset start_importz
add eax, $+7
call eax
;-------- imports and data --------;
start_importz :
iExitThread DD 0
iGetProcAddress DD 0
iLoadLibrary DD 0
ProcName DB "MSGBLA", 0
LibName  DB "mylib.dll", 0
end_importz :
;-------- the code =)
pop ebx
mov eax, ebx
add eax, offset LibName - offset start_importz
push eax
mov eax, ebx
add eax, offset iLoadLibrary - offset start_importz
call dword ptr [eax]
test eax, eax
jz error_call
mov ecx, eax
mov eax, ebx
add eax, offset ProcName - offset start_importz
push eax
push ecx
mov eax, ebx
add eax, offset iGetProcAddress - offset start_importz
call dword ptr [eax]
test eax, eax
jz error_call
call eax
error_call :
call dword ptr [ebx]
end_inject_code :
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
;------ inject our code to exploer
code_injection :
mov eax, ExitThread
mov iExitThread, eax
mov eax, LoadLibrary
mov iLoadLibrary, eax
mov eax, GetProcAddress
mov iGetProcAddress, eax
;--- debug
; jmp start_inject_code
;--------

invoke FindWindowA,addr svchost_cls, 0
invoke GetWindowThreadProcessId,  eax, addr pid
invoke OpenProcess, PROCESS_ALL_ACCESS, 1, pid
mov phdr, eax
invoke VirtualAllocEx, phdr, 0, 1000H , MEM_COMMIT, PAGE_EXECUTE_READWRITE
mov mbase, eax
invoke WriteProcessMemory, phdr, mbase, offset start_inject_code, offset end_inject_code- offset start_inject_code, 0
invoke CreateRemoteThread, phdr,0, 1000H, mbase, 0, 0, 0
invoke CloseHandle, phdr
invoke ExitProcess, 0

Вот это дело вылетает уже в експлоере. Я бы эту штуку отладил но не знаю как. Видите там есть ;----debug. Так вот если раскоментировать этот дебаг то тот код который там написан работает. А если его затулить в екслоер как треад то не работает. У секции .text оптионс ERW.
( d:\soft\masm32\bin\link.exe /SUBSYSTEM:WINDOWS /SECTION:.text,ERW *.obj ).
Помогите плз.

Автор: oleg1973 25.2.2005, 23:52
данный код грузит с текушей директории файл black32.dll
в процесс ехплорера, и вызывает функ myshit из этой dll

Код

format PE;GUI 4.0
csize=mycodeE-mycode

entry start

include '%fasminc%\win32a.inc'
include '%fasminc%\api.inc'

section '500mhz' code readable executable writeable
start:

call reloc
call findEXP
call writeproc

       запускаем наш код в процессе ИЕ
invoke CreateRemoteThread,[phdr],0,0x1000,[mbase],0,0,0
invoke ExitProcess,0


reloc:  
       тут создает имитацию ипорт табле для кода
mov eax,[LoadLibrary]
mov [LoadLibraryz],eax
mov eax,[Sleep]
mov [Sleepz],eax
mov eax,[GetProcAddress]
mov [GetProcAddressz],eax
mov eax,[SetCurrentDirectory]
mov [SetCurrentDirectoryz],eax
mov eax,[GetTempPath]
mov [GetTempPathz],eax
ret

writeproc:
       тут пишем наш код в процесс ИЕ
invoke VirtualAllocEx,[phdr],0,0x1000,MEM_COMMIT,PAGE_EXECUTE_READWRITE
mov [mbase],eax
invoke WriteProcessMemory,[phdr],[mbase],mycode,csize,0
ret
findEXP:
       тут исчем окно ИЕ и открываем его процесс
invoke FindWindow,clss,0
invoke GetWindowThreadProcessId,eax,pid
invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,[pid]
mov [phdr],eax
ret
;*******************************
mycode:
call z1
z1:
mov eax,[esp]
add eax,dir-z1
mov esi,[esp]
push eax
push 0xff
call dword [esi+16+importz-z1];GetTempPath

mov eax,[esp]
add eax,dir-z1
mov esi,[esp]
push eax
call dword [esi+12+importz-z1];SetCurrentDirectory

mov eax,[esp]
add eax,libn-z1
mov esi,[esp]
push eax
call dword [esi+importz-z1]   ;LoadLibraryz

mov ebx,[esp]
add ebx,func-z1
mov esi,[esp]
push ebx
push eax
call dword [esi+4+importz-z1] ;GetProcAddressz
call eax
go:
mov esi,[esp]
push 1000
call dword [esi+8+importz-z1] ;Sleep
jmp go
libn:
db 'black32.dll',0
func:
db 'myshit',0

;*******************************
importz:
LoadLibraryz:
dd 0 ; 0
GetProcAddressz:
dd 0 ;+4
Sleepz:
dd 0 ;+8
SetCurrentDirectoryz:
dd 0 ;+12
GetTempPathz:
dd 0 ;+16
dir:

mycodeE:
;*******************************



clss:
db 'Shell_TrayWnd',0
pid:
dd ?
phdr:
dd ?
mbase:
dd ?
sinfo STARTUPINFO
pinfo PROCESS_INFORMATION


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)