 |
Пример инжекта кода в процесс на FASM - Разработка ПО для Perfect World - Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World |
12.07.2012, 20:42
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 02.12.2010
 Сообщений: 3
 Популярность: -58
 Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Пример инжекта кода в процесс на FASM
Собсна примеры иньекции кода в сторонний процесс на C, Delphi есть - на FASM нету  . А так я пишу на нём то, в общем пример внедрения кода на FASM.
Чуть подробней:
В данном примере демонстрируется иньекция необходимого нам кода в процесс elementclient - а именно кода показа пвшного уведомления " вы покинули безопасную зону" и " вы входите в безопасную зону" ну и вызов API MessageBoxA. Хочу заметить что перед вызовом API необходимо убедится что нужная нам библа подгружена, в противном случае LoadLibrary/GetProcAddress.
Код:
format pe gui 4.0
include 'F:\PATHFASM\inc\win32ax.inc'
IDC_BUTTON = 102
; секция данных
section '.data?' data readable writeable
hwnd dd ?
pid dd ?
did dd ?
hInstance dd ?
hmem dd ?
; Код под иньекцию
ElemProc:
; появляется надпись "вы покинули безопасную зону" когда с писа выходиш
mov ebx,$00432330
mov eax,[$924E0C]
push $40
mov ecx,[eax+$1C]
push ecx
call ebx
; появляется надпись "вы ВХОДИТЕ в безопасную зону. когда входиш в пис"
mov ebx,$00432330
mov ecx,[$924E0C]
push $3F
mov edx,[ecx+$1C]
push edx
call ebx
;; ;;
;;;; Пример вызовы MessageBoxA ;;;;
;; ;;
; Высчитываем дельта смещение
call $+5
pop esi
sub esi, $-ElemProc-1
; вызов мессейдж бокса
push 0
lea eax, [esi+param1-ElemProc]
push eax
lea eax, [esi+param2-ElemProc]
push eax
push 0
call [esi+p_MessageBox-ElemProc]
retn 4
; некоторые данные - текст для мессейджа и адресс апишки
p_MessageBox dd ?
param1 db 'Text',0
param2 db 'Caption',0
ElemSize = $-ElemProc ; ElemSize - размер внедряемого кода
; секция кода
section '.code' code readable writeable executable
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 ; сохроняем адресс функции MessageBoxA
invoke FindWindow,NULL,'Element Client' ; ищем окно PW
cmp eax,0
je @f
mov [hwnd],eax
invoke GetWindowThreadProcessId,[hwnd],pid ; получаем PID процесса
invoke OpenProcess, PROCESS_ALL_ACCESS, 0, [pid] ; открываем процесс c полными правами
test eax, eax
jz @F ; переход на метку с уведомлением о ошибке
mov [did],eax
invoke VirtualAllocEx,eax,0,ElemSize,MEM_COMMIT,PAGE_READWRITE ; выделяем память
mov [hmem],eax ; сохроняем хендл
invoke WriteProcessMemory,[did],[hmem], ElemProc,ElemSize, 0 ; пишем в память наш код
invoke CreateRemoteThread,[did],0,0,[hmem],0,0,0 ; создаём нить
invoke WaitForSingleObject,eax,0 ; ждём завершения работы
invoke CloseHandle,[did] ; закрываем хендл
invoke VirtualFreeEx,[did],[hmem], 0, MEM_RELEASE ; освобождаем память занятую нами
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
; секция импорта
section '.idata' import data readable
library kernel32, 'kernel32.dll', \
user32, 'user32.dll', \
comctl32,'COMCTL32.DLL'
include 'F:\PATHFASM\inc\api\kernel32.inc'
include 'F:\PATHFASM\inc\api\user32.inc'
include 'F:\PATHFASM\inc\api\COMCTL32.inc'
; секция ресурсов - создаём стандартное окошко с 1 кнопочкой по нажатию которой будет происходить инжект
section '.rsrc' resource data readable
directory RT_DIALOG,dialogs
resource dialogs,1,LANG_RUSSIAN+SUBLANG_DEFAULT,TestDialog
dialog TestDialog,'Elem Inject / Nobody4all - forum Zhyk.ru',80,120,90,62, WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME+WS_MINIMIZEBOX
dialogitem 'BUTTON','Inject', IDC_BUTTON, 15, 15, 55, 13, WS_VISIBLE+WS_TABSTOP+BS_DEFPUSHBUTTON
enddialog
код посторался прокомментировать..
________________
ем мороженки Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось Nobody4all; 12.07.2012 в 20:45.
|
|
|
Пользователь сказал cпасибо:
|
|
12.07.2012, 23:45
|
#2
|
|
|
|
Лейтенант-командор
|
 Регистрация: 12.08.2010
 Сообщений: 727
 Популярность: 30569
 Золото Zhyk.Ru: 1
 Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: Ппример инжекта кода в процесс на FASM
Один из немногих людей, которые делают код сами  Молодец, что не побоялся начинать на "неосвоенном" в этом разделе языке  Благодарю за работу
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 07:34.
|
 |