 |
|

28.12.2010, 01:00
|
|
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами:
8289686
Репутация:
89
|
|
Доброго времени суток, в данном блоге я буду высказывать свои мысли, рассказывать о том что познал в последнее время, выкладывать полезные на мой взгляд исходники программ и т.д.
Для начала немного обо мне:
Зовут меня Александр(?), увлекаюсь программированием. Любимые языки delphi, fasm, php.
Пишу небольшие проекты под заказ, курю маны на различных форумах итд итп
|
|
|

28.04.2011, 01:00
|
|
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами:
8289686
Репутация:
89
|
|
Накотал небольшой пример отправки http хидеров и получение ответа от сервера, эдакий "Inet Crack",. по функционалу ему конечно уступает, но как "каркас" для чего-то большего вполне подойдёт
исходник на фасме
code:
format PE GUI 4.0
entry start
include '..\..\inc\win32ax.inc'
include '..\..\inc\api\wsock32.inc'
include '..\..\inc\api\kernel32.inc'
include '..\..\inc\api\user32.inc'
include '..\..\inc\api\comctl32.inc'
include 'strtodword.inc '
struct TIMEVAL
tv_sec dd ?
tv_usec dd ?
ends
tv TIMEVAL <>
section '.code' code import writeable readable executable
library kernel32,'KERNEL32.DLL', user32,'USER32.DLL', winsock,'WSOCK32.DLL',\
comctl32,'COMCTL32.DLL'
import winsock,\
WSAStartup,'WSAStartup', recv,'recv', connect,'connect', ws_gethostbyname,'gethostbyname',\
closesocket,'closesocket', send,'send', socket,'socket', WSACleanup,'WSACleanup',\
htons,'htons',inet_addr,'inet_addr',setsockopt,'se tsockopt'
start:
invoke InitCommonControls
invoke GetModuleHandle, 0
invoke DialogBoxParam, eax, 1, HWND_DESKTOP, DialogProc, 0
invoke ExitProcess,0
proc DialogProc hwnddlg,msg,wparam,lparam
push ebx esi edi
cmp [msg],WM_INITDIALOG
je .wminitdialog
cmp [msg],WM_COMMAND
je .wmcommand
cmp [msg],WM_CLOSE
je .wmclose
xor eax,eax
jmp .finish
.wminitdialog:
invoke GetDlgItem, [hwnddlg], ID_MESSAGE
jmp .processed
.wmcommand:
mov eax,[wparam]
cmp ax,IDC_BUTTON
jne .finish
;---------------------------WORK-------------------------------------------------------------
invoke lstrlenA,sendbuf ; Это
invoke RtlZeroMemory,sendbuf,eax ; очистка
invoke lstrlenA,recvbuf ; памяти, выделенная под
invoke RtlZeroMemory,recvbuf,eax ; буфер приёма и отправки хидеров.
invoke GetDlgItemText,[hwnddlg],IDC_MEMO,sendbuf,4096 ; Получаем в переменную sendbuf наш сформированный хидер
invoke GetDlgItemText,[hwnddlg],ID_MESSAGE,ip,100 ; Получаем в переменную ip хост или ип
invoke GetDlgItemText,[hwnddlg],ID_COMMAND,port,10 ; Получаем в переменную port номер порта
stdcall STR_to_DWORD,port ; процедура переводит строку в число, на воходе в eax - результат
mov [port],eax ; помещаем полученные данные в переменную port
invoke GetDlgItemText,[hwnddlg],ID_MESSAGE2,timeout,10 ; Получаем в переменную timeout данные
stdcall STR_to_DWORD,timeout ; ..и переводим предыдущей процедуркой также..
mov [tv.tv_sec],eax ; и пихаем сюда результат..т.е. заполняем струк-
mov [tv.tv_usec],0 ; ..туру TIMEVAL
invoke WSAStartup,1012h,wsadata ; инициализируем библиотеку сокетов
cmp eax,0 ; проверка..
jb .err ; ..на вшивость
invoke ws_gethostbyname, ip ; получаем информаци по хосту
cmp eax,0 ; проверка..
je .err3 ; ..на вшивость
virtual at eax ;--
.host hostent ; Ассоциируем указатель на структуруа со структурой которая определенна у вас в инклудах
end virtual ;--
mov eax, [.host.h_addr_list] ; производим некоторые манипуляции..
mov eax, [eax] ;..со структурой..
mov eax, [eax] ;.. HOSTENT а именно получаем айпи адресс
; заполняем структуру sockaddr_in которая необходима для корректной работы создоваемого сокета
; Коментить небуду, думаю и так всё понятно- указываем айпи адресс, тип сокета и т.д
mov [saddr.sin_addr],eax ;---
invoke htons,[port] ;---
mov [saddr.sin_port],ax ;---
mov [saddr.sin_family],AF_INET ;---
invoke socket, AF_INET, SOCK_STREAM, 6 ;---Сокет создан..
xchg eax, esi ; ..сохроняем его дескриптор
invoke setsockopt, esi, SOL_SOCKET, SO_RCVTIMEO, tv, sizeof.TIMEVAL ; указываем таймаут
invoke connect, esi, saddr, sizesaddr ; коннект
cmp eax,-1 ; проверка..
jz .err2 ; ..на вшивость
; Дальше идёт формирование хидера/Его отправка (invoke send)/приём (invoke recv)
invoke lstrlenA, sendbuf ;---
mov [sendbuf+eax],10 ;---
mov [sendbuf+eax+2],13 ;---
invoke lstrlenA, sendbuf ;---
mov [sendbuf+eax],10 ;---
mov [sendbuf+eax+2],13 ;---
invoke lstrlenA,sendbuf ;---
invoke send, esi, sendbuf, eax, 0 ;---
invoke recv, esi, recvbuf, 1000, 0 ;---
invoke lstrlenA,recvbuf ;---
cmp eax,0 ; проверка..
je @f ; ..на вшивость
invoke SetDlgItemText, [hwnddlg], IDC_MEMO2,recvbuf ; пишем данные которые пришли от удалённого сервера
jmp .processed
@@:
invoke SetDlgItemText, [hwnddlg], IDC_MEMO2,'Неудалось получить данные от сервера' ; в случае если по каким-то причинам буфер пуст- уведомляем.
pop ecx eax
ret
;----------------------------------------------------------------------------------------------
; Всё данные отправленны/полученны, конец..Ниже указанны метки, переход на которые возникают при проверке на вшивость
.err:
invoke MessageBox,0,'Ошибка при инициализации WSOCK32.DLL','[ Simple ] HEADER_HTTP sender- Fatal error',MB_ICONERROR
jmp .processed
.err2:
invoke MessageBox,0,'Неудаёться подключиться к хосту','[ Simple ] HEADER_HTTP sender- Error',MB_ICONINFORMATION
jmp .processed
.err3:
invoke MessageBox,0,'Проверьте правильность заполнения поля "HOST/IP"','[ Simple ] HEADER_HTTP sender- Information',MB_ICONINFORMATION
jmp .processed
;----------------------------------------------------------------------------------------------
.wmclose:
invoke closesocket,esi
invoke WSACleanup
invoke EndDialog,[hwnddlg],0
.processed:
mov eax,1
.finish:
xor eax,eax
.ret:
ret
endp
;------Ниже обьявление некоторых данных и секция ресурсов------------------------------------
saddr sockaddr_in
sizesaddr = sizeof.sockaddr_in
wsadata WSADATA
ID_STATIC = 99
ID_COMMAND = 100
ID_MESSAGE = 101
IDC_BUTTON = 102
IDC_MEMO = 103
IDC_MEMO2 = 104
ID_MESSAGE2 = 105
UDM_SETRANGE32 = 046Fh
SO_RCVTIMEO = 1006h
SOL_SOCKET = 0ffffh
port rd 2
ip rd 4
timeout rd 2
sendbuf rd 5000
recvbuf rd 100000
section '.rsrc' resource data readable
directory RT_DIALOG,dialogs
resource dialogs,1,LANG_RUSSIAN+SUBLANG_DEFAULT,TestDialog
dialog TestDialog,'[ Simple ] HEADER_HTTP sender..:Coded by Ancord:..',80,120,500,220,WS_SIZEBOX+WS_CAPTION+WS _POPUP+WS_SYSMENU+DS_MODALFRAME
dialogitem 'STATIC','HOST/IP:', ID_STATIC ,5,5, 30, 11, WS_VISIBLE
dialogitem 'edit', 'site.ru', ID_MESSAGE,5,15, 75, 11, WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_LOWERCASE
dialogitem 'STATIC','Port:', ID_STATIC ,80,5, 20, 11, WS_VISIBLE
dialogitem 'edit', '80', ID_COMMAND,80,15, 25, 11, ES_NUMBER+WS_VISIBLE+WS_BORDER+WS_TABSTOP
dialogitem 'STATIC','Timeout(ms):',ID_STATIC ,5,30, 75, 11, WS_VISIBLE
dialogitem 'edit', '2000', ID_MESSAGE2,5,40, 30, 11, ES_NUMBER+WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_LOWER CASE
dialogitem 'BUTTON','Connect',IDC_BUTTON,5,55,75,13,WS_CHILD+ WS_VISIBLE+WS_TABSTOP
dialogitem 'EDIT','',IDC_MEMO2, 200,70,300,150,WS_SIZEBOX+ES_LEFT+ES_WANTRETURN+ES _MULTILINE+ES_AUTOVSCROLL+ES_AUTOHSCROLL+WS_VISIBL E+WS_BORDER+WS_VSCROLL+WS_HSCROLL+WS_TABSTOP
dialogitem 'EDIT',,\
IDC_MEMO, 0,70,200,150,+ES_NOHIDESEL+ES_WANTRETURN+WS_SIZEBO X+ES_LEFT+ES_MULTILINE+WS_VISIBLE+WS_BORDER+WS_VSC ROLL+WS_HSCROLL+WS_TABSTOP
enddialog
|
|
|

04.05.2011, 01:00
|
|
Постоянный
Регистрация: 07.01.2011
Сообщений: 458
С нами:
8076566
Репутация:
23
|
|
Глянул мельком пример,интересует вот что:
source:
Код:
include
'strtodword.inc '
Где его взять?В стандартном пакете вроде как нету.
|
|
|

04.05.2011, 01:00
|
|
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами:
8289686
Репутация:
89
|
|
strtodword.inc:
code:
proc GetZSLength
push ecx
push esi
cld
xor al, al
mov ecx, 0FFFFFFFFh
mov esi, edi
repne scasb
sub edi, esi
mov eax, edi
dec eax
pop esi
pop ecx
ret
endp
proc STR_to_DWORD strc
mov esi,[strc]
mov eax,10
push esi
push ebx
push edi
push edx
push ecx
cmp eax, 16
ja .error
cmp eax, 2
jb .error
mov ecx, eax
mov edi, esi
call GetZSLength
mov edi, eax
add edi, esi ; edi point to end ZS
xor eax, eax
xor edx, edx
inc edx
.rep:
dec edi
xor ebx, ebx
mov bl, [edi]
cmp bl, 30h
jb .error
cmp bl, 39h
jna .digit
cmp bl, 41h
jb .error
@@:
cmp bl, 46h
jna .sim_upcase
cmp bl, 61h
jb .error
@@:
cmp bl, 66h
jna .sim_lowcase
ja .error
.digit:
sub bl, 30h
jmp @f
.sim_upcase:
sub bl, 37h
jmp @f
.sim_lowcase:
sub bl, 57h
@@:
cmp bl, cl
ja .error
imul ebx, edx
add eax, ebx
imul edx, ecx
cmp edi, esi
jnz .rep
.endrep:
jmp @f
.error:
xor eax, eax
@@:
pop ecx
pop edx
pop edi
pop ebx
pop esi
ret
endp
|
|
|

22.06.2011, 01:00
|
|
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами:
8289686
Репутация:
89
|
|
TOHEX- написал небольшую утилиту для снятия дампа. Выбераем исходный файл-> выбераем файл для сохранения- и на выходе получаем HEX эквивалент, результат вида
(в данном случае файл PE формата)
code:
4D5A80000100000004001000FFFF0000400100000000000040 0000000000000000000000000000000000000
000000000000000000000000000000000800000000E1FBA0E0 0B409CD21B8014CCD21546869732070726F6772616D..etc
source:
Код:
format pe gui
4.0
include
'inc\win32ax.inc'
ofn OPENFILENAME
sdex
HEXTBL: db
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
65
,
66
,
67
,
68
,
69
,
70
FilterString1 db
'All Files (*.*)'
,
0
,
'*.*'
,
0
,
0
buffer db
512
dup (?)
hInstance dd ?
hfile dd ?
hfile2 dd ?
buf_len_read dd ?
buf_len_write dd ?
buf dd ?
datat dd ?
scex
entry $
invoke GetModuleHandle,
0
mov [hInstance],eax
mov [ofn.lStructSize],sizeof.OPENFILENAME
push [hInstance]
pop [ofn.hInstance]
mov [ofn.lpstrFilter],FilterString1
mov [ofn.lpstrFile],buffer
mov [ofn.nMaxFile],
512
mov
byte
[buffer],
0
invoke GetOpenFileNameA,ofn
invoke CreateFile,buffer,GENERIC_READ,FILE_SHARE_READ,
0
,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,
0
mov [hfile],eax
.
if
eax
=
INVALID_HANDLE_VALUE
invoke MessageBox,
0
,
'Неудалось открыть файл'
,
'TOHEX - fatal error [ coded by Ancord '
'2011'
' ]'
,
0
jmp .FINISH
.endif
invoke GetModuleHandle,
0
mov [ofn.lStructSize],sizeof.OPENFILENAME
push [hInstance]
pop [ofn.hInstance]
mov [ofn.lpstrFilter],FilterString1
mov [ofn.lpstrFile],buffer
mov [ofn.nMaxFile],
512
mov
byte
[buffer],
0
invoke GetSaveFileNameA,ofn
invoke CreateFile,buffer,GENERIC_WRITE,FILE_SHARE_WRITE,
0
,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,
0
mov [hfile2],eax
.
if
eax
=
INVALID_HANDLE_VALUE
invoke MessageBox,
0
,
'Неудалось открыть файл 2'
,
'TOHEX - fatal error [ coded by Ancord '
'2011'
' ]'
,
0
jmp .FINISH
.endif
invoke SetFilePointer,[hfile],
0
,
0
,
0
.read:
invoke ReadFile,[hfile],datat,
1
,buf_len_read,
0
cmp [buf_len_read],
0
je .endread
push [datat]
pop eax
mov eax,[datat]
shr eax,
4
mov edx,dword
0
mov al,
byte
[HEXTBL+eax]
mov
byte
[buf],al
mov eax,dword
0
mov eax,[datat]
mov ebx,10h
idiv ebx
mov eax,dword
0
mov dl,[HEXTBL+edx]
mov
byte
[buf+
1
],dl
cmp [buf],
0
jnz
@f
invoke WriteFile,[hfile2],
'00'
,
2
,buf_len_write,
0
jmp .read
@@:
invoke lstrlen,buf
cmp eax,
1
jnz
@f
invoke WriteFile,[hfile2],
'0'
,
1
,buf_len_write,
0
invoke WriteFile,[hfile2],buf,
1
,buf_len_write,
0
jmp .read
@@:
invoke WriteFile,[hfile2],buf,
2
,buf_len_write,
0
jmp .read
.endread:
invoke CloseHandle,[hfile]
invoke CloseHandle,[hfile2]
invoke MessageBox,
0
,
'ok'
,
'TOHEX - Finish [ coded by Ancord '
'2011'
' ]'
,
0
.FINISH:
invoke ExitProcess,
0
siex
library kernel,
'kernel32.dll'
,\
user,
'user32.dll'
,\
comdlg32,
'comdlg32.dll'
import
kernel,ExitProcess,
'ExitProcess'
,CreateFile,
'CreateFileA'
,CloseHandle,
'CloseHandle'
,\
SetFilePointer,
'SetFilePointer'
,ReadFile,
'ReadFile'
,\
WriteFile,
'WriteFile'
,lstrlen,
'lstrlen'
,GetModuleHandle,
'GetModuleHandleA'
import
user,MessageBox,
'MessageBoxA'
import
comdlg32,GetSaveFileNameA,
'GetSaveFileNameA'
,GetOpenFileNameA,
'GetOpenFileNameA'
FASM
|
|
|

27.06.2011, 01:00
|
|
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами:
8289686
Репутация:
89
|
|
Меняем пароль у ICQ номера через оф.сайт icq.com. В memo3 лист вида uin;pass в edit3 новый пароль,..
code:
for j:=0 to memo3.lines.Count-1 do begin
uin:=copy(memo3.lines[j],1,pos(';',memo3.lines[j])-1);
pass:=copy(memo3.lines[j],pos(';',memo3.lines[j])+1,length(memo3.lines[j]));
/////////////////// Гетим и парсим карму ////////////////////////////
memo3.lines[j]:=uin+';'+pass+' - Get session';
try
memo1.lines.Text:=Utf8ToAnsi(idhttp1.get('https://www.icq.com/login/ru?dest=/change-password/ru'));
except
memo3.lines[j]:=uin+';'+pass+' - error';
continue;
end;
memo3.lines[j]:=uin+';'+pass+' - Ok'; application.ProcessMessages();
karma:=copy(memo1.Lines.text,pos('karmaSyncKey" value="',memo1.lines.text)+21,64);
//////////// 1 POST запрос - авторизация ///////////////////////////
memo3.lines[j]:=uin+';'+pass+' - Authorization';
ts:=tstringlist.Create();
ts.add('karmaSyncKey='+karma);
ts.add('dest=');
ts.add('emailuin='+uin);
ts.add('password='+pass);
ts.add('remember_me=');
IdHTTP1.Request.ContentLength:=sizeof(ts.text);
try
memo1.lines.Text:=Utf8ToAnsi(idhttp1.post('https://www.icq.com/login/ru',ts));
except
memo3.lines[j]:=uin+';'+pass+' - error';
continue;
end;
memo3.lines[j]:=uin+';'+pass+' - Ok'; application.ProcessMessages();
//////////////// 2 GET запрос - получаем карму ////////////////////////
memo3.lines[j]:=uin+';'+pass+' - Change password';
try
memo1.lines.Text:=Utf8ToAnsi(idhttp1.get('https://www.icq.com/change-password/ru'));
except
memo3.lines[j]:=uin+';'+pass+' - error';
continue;
end;
application.ProcessMessages();
karma:=copy(memo1.Lines.text,pos('karmaSyncKey" value="',memo1.lines.text)+21,64);
////////////// ПОСЛЕДНИЙ POST запрос- меняем пасс ///////////////////////
ts.Clear;
ts.add('karmaSyncKey='+karma);
ts.add('first_name=');
ts.add('last_name=');
ts.add('email=');
ts.add('current_password='+pass);
ts.add('password='+edit3.text);
ts.add('retype_password='+edit3.text);
IdHTTP1.Request.ContentLength:=sizeof(ts.text);
try
memo1.lines.Text:=Utf8ToAnsi(idhttp1.post('https://www.icq.com/change-password/ru',ts));
if pos('Пароль был успешно изменен',memo1.lines.text) > 0 then begin
memo3.lines[j]:=uin+';'+pass+' - Ok';
memo4.lines.add(uin+';'+edit3.text);
continue;
end else
memo3.lines[j]:=uin+';'+pass+' - No';
except
memo3.lines[j]:=uin+';'+pass+' - error';
continue;
end;
end;
showmessage('Completed!');
код совсем сырой и не оптимизированный )
код на делфи..
p/s
есть вариант с synapse* и более модифированный, выложу весь проект если это кому интересно )
Delphi 7
|
|
|

28.06.2011, 01:00
|
|
Постоянный
Регистрация: 07.01.2011
Сообщений: 458
С нами:
8076566
Репутация:
23
|
|
Ancord,пример снятия дампа на fasm не компелится.
Выдаёт ошибку на вот этих строчках:
source:
|
|
|

28.06.2011, 01:00
|
|
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами:
8289686
Репутация:
89
|
|
Цитата:
Сообщение от ChernoHod
Ancord,пример снятия дампа на fasm не компелится.
Выдаёт ошибку на вот этих строчках:
source:
win32ax.inc
code:
sdex fix section '.data' data readable writeable
scex fix section '.code' code readable writeable executable
siex fix section '.import' import data readable
srex fix section '.rsrc' resource data readable
|
|
|

04.08.2011, 01:00
|
|
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами:
8289686
Репутация:
89
|
|
авторизация vb4 и получение страницы, мб кому ещё пригодиться, недавно попросили написать
code:
var post:Tstringlist;
begin
post:=TStringList.Create;
post.Add('vb_login_username='+edit1.text);
post.Add('vb_login_password='+edit2.text);
post.Add('vb_login_password_hint=');
post.Add('s=');
post.Add('securitytoken=guest');
post.Add('do=login');
post.Add('vb_login_md5password='+AnsiLowerCase(MD5 (edit2.text)));
post.Add('vb_login_md5password_utf='+AnsiLowerCase (MD5(edit2.text)));
memo1.lines.text:=idhttp1.Post('http://site.com/login.php',post);
...
memo1.lines.text:=idhttp1.get('site.com/showthread.php?');
Delphi 7
|
|
|

23.08.2011, 01:00
|
|
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами:
8289686
Репутация:
89
|
|
Простейший пример внедрения в процесс (инжект) и сплайсинг функции (в данном примере- CreateThread)
Проще говоря, мы внедряемся в процесс и меняем адресс API функции на адресс своей процедуры.
code:
format pe gui 4.0
include '..\inc\win32ax.inc'
IDC_BUTTON = 102
sdex
hwnd dd ?
pid dd ?
did dd ?
hInstance dd ?
hmem dd ?
InjectCode:
call $+5
pop esi
sub esi, $-InjectCode-1
; заполняем структуру pare - push 11111111 ret
mov [esi+fj.pushSt-InjectCode],$68
lea eax,[esi+lala-InjectCode]
mov [esi+fj.pushAdd-InjectCode],eax
mov [esi+fj.reteAdd-InjectCode],$C3
; пишем в память
lea eax,[esi+wrt-InjectCode]
push eax
push 6
lea eax,[esi+fj-InjectCode]
push eax
lea eax,[esi+p_CreateThread-InjectCode]
push 7C8106D7h ; add createthread
push INVALID_HANDLE_VALUE
call [esi+p_WriteProcessMemory-InjectCode]
cmp eax,0 ; если ошибка то прыгаем..
je err1
retn 4
; наша процедура которая будет вызываться..
proc lala
call $+5
pop esi
sub esi, $-InjectCode-1
push 0
lea eax, [esi+capt-InjectCode]
push eax
lea eax, [esi+mess-InjectCode]
push eax
push 0
call [esi+p_MessageBox-InjectCode]
ret
endp
err1:
push 0
lea eax, [esi+text-InjectCode]
push eax
lea eax, [esi+text-InjectCode]
push eax
push 0
call [esi+p_MessageBox-InjectCode]
retn 4
p_MessageBox dd ?
p_WriteProcessMemory dd ?
wrt dd ?
text db 'error write', 0
capt db 'Splice =*',0
mess db 'Данной действие запрещенно системой о.0',0
struct pare
pushSt db 1
pushAdd dd 1
reteAdd db 1
ends
fj pare <>
InjectSize = $-InjectCode
scex
entry $
invoke InitCommonControls
invoke GetModuleHandle, 0
mov [hInstance],eax
invoke DialogBoxParam, [hInstance], 1, HWND_DESKTOP, DialogProc, 0
invoke ExitProcess,0
proc DialogProc hwnddlg,umsg,wparam,lparam
push ebx esi edi
cmp [umsg],WM_COMMAND
je .WMCOMMAND
cmp [umsg],WM_CLOSE
je .WMCLOSE
jmp .FINISH
jmp @f
.WMCOMMAND:
cmp [wparam],IDC_BUTTON
jnz .FINISH
mov eax, [MessageBox]
mov [p_MessageBox], eax
; Собсна- стандартный инжект. Выделяем некоторую область памяти, пишем наши данные и запускаем нить
invoke FindWindow,NULL,'CAPTION PROCESS'
cmp eax,0
je @f
mov [hwnd],eax
invoke GetWindowThreadProcessId,[hwnd],pid
invoke OpenProcess, PROCESS_ALL_ACCESS, 0, [pid]
test eax, eax
jz @F
mov [did],eax
invoke VirtualAllocEx,eax,NULL,InjectSize,MEM_COMMIT,PAGE _READWRITE
mov [hmem],eax
invoke WriteProcessMemory,[did],[hmem], InjectCode, InjectSize, 0
invoke CreateRemoteThread,[did],0,0,[hmem],0,CREATE_SUSPENDED, 0
invoke ResumeThread,eax
invoke CloseHandle,[pid]
jmp .FINISH
@@:
invoke MessageBox,0,'err','err',0
jmp .FINISH
.WMCLOSE:
invoke EndDialog,[hwnddlg],0
.FINISH:
mov eax,1
pop ebx esi edi
xor eax,eax
.ret:
ret
endp
siex
library kernel32, 'kernel32.dll', \
advapi32, 'advapi32.dll', \
user32, 'user32.dll', \
gdi,'GDI32.DLL', \
comctl32,'COMCTL32.DLL',\
winsock,'WSOCK32.DLL'
include '..\inc\api\kernel32.inc'
include '..\inc\api\advapi32.inc'
include '..\inc\api\user32.inc'
include '..\inc\api\GDI32.inc'
include '..\inc\api\COMCTL32.inc'
include '..\inc\api\wsock32.inc'
srex
directory RT_DIALOG,dialogs
resource dialogs,1,LANG_RUSSIAN+SUBLANG_DEFAULT,TestDialog
dialog TestDialog,'attack',80,120,90,62, WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME+WS_MI NIMIZEBOX
dialogitem 'BUTTON','attach', IDC_BUTTON, 15, 15, 55, 13, WS_VISIBLE+WS_TABSTOP+BS_DEFPUSHBUTTON
enddialog
FASM
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|