Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Пример инжекта кода в процесс на FASM

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 12.07.2012, 20:42   #1
 Разведчик
Аватар для Nobody4all
 
Nobody4all неизвестен в этих краях
Регистрация: 02.12.2010
Сообщений: 3
Популярность: -58
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Отправить сообщение для Nobody4all с помощью ICQ
 
Post Пример инжекта кода в процесс на 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
код посторался прокомментировать..
________________
ем мороженки

Последний раз редактировалось Nobody4all; 12.07.2012 в 20:45.
  Ответить с цитированием
Пользователь сказал cпасибо:
VeTaL_UA (12.07.2012)
Старый 12.07.2012, 23:45   #2
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Ппример инжекта кода в процесс на FASM

Один из немногих людей, которые делают код сами Молодец, что не побоялся начинать на "неосвоенном" в этом разделе языке Благодарю за работу
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: 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.


  Ответить с цитированием
Ответ

Метки
инжект, elementclient, fasm, пример, injection


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Статья] [FASM, MASM] BlueScreen VindictuS ASM/WinAPI 3 09.07.2012 12:36
[Файл] Готовая IDE RadASM с уже прикрученным FASM Ivan_32 ASM/WinAPI 2 09.03.2009 16:13
[Программа] Пример использования MCI. Ivan_32 ASM/WinAPI 0 16.12.2008 07:16

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 17:20.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net