есть код - invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,2424 invoke CreateRemoteThread,eax,0,0,mes,0,0 proc mes invoke MessageBoxA,0,'','',0 leave retn endp по идее должен создавать удаленный поток с процессом у которого pid=2424, и выводить месагебокс. но вместо этого фаталэррор. В чем проблема может быть?
PID (Process Identifier) - после каждого запуска менятся. По этому вот здесь PID!=2424 Code: invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,2424 Можешь привести полный код или программку.
скорее не забыл а не знал Вот полный код. чисто тестовая прога PHP: format PE GUI 4.0 entry start include 'INCLUDE/win32ax.inc' section '.code' code readable executable start: invoke OpenProcess,PROCESS_ALL_ACCESS or PROCESS_VM_WRITE or PROCESS_CREATE_THREAD or PROCESS_CREATE_PROCESS,FALSE,1908 ;1908 - тут пид любого процесса. когда я тестил у оперы был такой пид invoke CreateRemoteThread,eax,0,0,mes,0,0 invoke ExitProcess,0 proc mes invoke MessageBoxA,0,'','',0 leave retn endp section '.idata' import data readable writable library kernel32,'KERNEL32.DLL',user32,'USER32.DLL' import user32,MessageBoxA,'MessageBoxA' import kernel32,CreateRemoteThread,'CreateRemoteThread',OpenProcess,'OpenProcess',ExitProcess,'ExitProcess'
Помогите найти ДОКИ, чтобы подробно понять архитектуру процессора. Начинаю изучать асм - пока тяжело даётся. Ещё было бы неплохо, если бы статей подкинули интересных. всё кто откликнется - огромное спасибо!
>>Помогите найти ДОКИ, чтобы подробно понять архитектуру процессора. Начинаю изучать асм - пока тяжело даётся. Ещё было бы неплохо, если бы статей подкинули интересных. всё кто откликнется - огромное спасибо! http://wasm.ru/publist.php?list=11 И вообще весь васм)
1) Открываем процесс Code: invoke OpenProcess,PROCESS_ALL_ACCESS or PROCESS_VM_WRITE or PROCESS_CREATE_THREAD or PROCESS_CREATE_PROCESS,FALSE,PID 2) Выделяем память в чужом процессе Code: invoke VirtualAllocEx, Process, NULL, size, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE mov zzz, eax 3) Копируем память в процесс Code: invoke WriteProcessMemory, Process, zzz, Memory, size, BytesWritten 4) Создаем удаленный поток Code: invoke CreateRemoteThread, hProc, NULL , 0 , pfnStatAddr, szPathtoDLL, 0, NULL Внедряем библу DLL, в которой и находится твой внедряемый код Code: proc mes invoke MessageBoxA,0,'','',0 leave retn endp
// Ошибся здесь Code: ; -=-=-=-=-=-=-=-=-=-=-=-=-=- ; Code injection in FASM ; Created by Ct757 ; -=-=-=-=-=-=-=-=-=-=-=-=-=- ; ; Use FASM to compile this shit format PE GUI 4.0 entry start include '%fasminc%\win32a.inc' section '.code' code readable writeable executable target_name db 'explorer.exe',0 ;...............[INJECT CODE]..................; remote_thread: call .delta .delta: pop ebp sub ebp,.delta xor esi,esi lea eax,[ebp+_user32] push eax call [ebp+pLoadLibrary] push esi lea eax,[ebp+_title] push eax lea eax,[ebp+_message] push eax push esi call [ebp+pMessageBox] ret .data: pMessageBox dd 0 pLoadLibrary dd 0 _user32 db 'USER32.DLL',0 _message db 'Hello world!',0 _title db 'Injected',0 thread_end: ;...............[END INJECT CODE]..............; p_ent PROCESSENTRY32 find_target: xor esi,esi .shot: mov [p_ent.dwSize],sizeof.PROCESSENTRY32 invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,esi inc eax je .not_found dec eax xchg eax,edi invoke Process32First,edi,p_ent .next_prc: xchg eax,ecx jecxz .not_found invoke lstrcmpi,p_ent.szExeFile,target_name xchg eax,ecx jecxz .found invoke Process32Next,edi,p_ent jmp .next_prc .found: invoke CloseHandle,edi mov eax,[p_ent.th32ProcessID] ret .not_found: xor eax,eax ret inject_code: xor esi,esi invoke OpenProcess,PROCESS_VM_OPERATION + PROCESS_VM_WRITE + PROCESS_CREATE_THREAD,esi,eax xchg eax,ecx jecxz .exit xchg ecx,edi invoke VirtualAllocEx,edi,esi,thread_end-remote_thread,MEM_COMMIT,PAGE_READWRITE xchg eax,ecx jecxz .close_h xchg ecx,ebp invoke WriteProcessMemory,edi,ebp,remote_thread,thread_end-remote_thread,esi dec eax test eax,eax jnz .close_h inc eax invoke CreateRemoteThread,edi,esi,esi,ebp,ebp,esi,esi .close_h: invoke CloseHandle,edi .exit: ret get_apis: mov edi,[LoadLibrary] mov [pLoadLibrary],edi mov edi,[MessageBox] mov [pMessageBox],edi ret start: call find_target test eax,eax je .exit call get_apis call inject_code .exit: push 0 call [ExitProcess] section '.idata' data import readable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' include '%fasminc%\APIA\kernel32.inc' include '%fasminc%\APIA\user32.inc'
wsprintf сишная функция и ответственность за выравнивание стека не несёт. Вызывающая программа сама должна его выравнивать (add esp,PushedSize где PushedSize колво байт, переданных через стек проге). В FASM'e для вызова сишных функций существует макрос cinvoke
и снова я с косяками: хочу вывести exe имя процесса(любого) в консоль process32First и Next в упор не заполняет структуру возвращяет что записал,а в odbg видит- пусто fasm Code: push 0 push 0x00000002 call dword [CreateToolhelp32Snapshot] mov [SnapHandle],Eax mov [ProcBuffer.size],4*9+255 push ProcBuffer push [SnapHandle] call dword [Process32First] push ProcBuffer push [SnapHandle] call dword [Process32Next] push 0 push 0 push 255 push ProcBuffer.exeFile push [StdOutputHandle] call dword [WriteConsoleA] Code: section '.data' data readable writeable struc PROCESSENTRY32 { .size dd 4*9+255 .usage dd ? .processID dd ? .defaultHeapID dd ? .moduleID dd ? .threads dd ? .parentProcessID dd ? .priClassBase dd ? .flags dd ? .exeFile db 255 dup(?) } ProcBuffer PROCESSENTRY32 полный исходник пример
Jes, что-то у тебя какое-то извращение идёт... воТ код на cpp, переделать его в асм нетрудно: Code: TCHAR Name[MAX_PATH]; int pid = 4;//pid Процесса HANDLE p = OpenProcess(PROCESS_QUERY_INFORMATION, false, pid); GetModuleFileNameExW(p, 0, Name, MAX_PATH); CloseHandle(p); _putts(Name); //единственная не-апишка на выводе. Чистый апи, так что разберёшься Add: Ай, забыл закрытия дескриптора.. не бейте меня!
не , мне как раз все процессы нада просмотреть (скорее всего поочередно) , хотябы через тулхэлп ... , а хотя , во ,лучше через NtQuerySystemInformation попробую , а затем exe по pid'у как в примере... ps: anyway , thanks
хошь на cpp дам исходник по проверке всех процессов и определению заметных через NtQuerySystemInformation? вот: http://webfile.ru/2075644 пасс: Jes
Всем привет. Я тут немного асм начал... ну понимаете. Ошибка какаето вылезла. Немогу скомпилить. Скачал масм. версия: "Macro Assembler Version 6.14.8444 & Incremental Linker Version 5.12.8078".
Да здесь типа программа "Хелло ворд". Code: CSEG segment org 100h Begin: mov ah,9 mov dx,offset Message int 21h int 20h Message db 'Hello, world!$' CSEG ends end Begin
линкуй линкером который в папке binr (при установке необходимо указать что нужно ставить и winNT и win9x версии) находится. Мне это помогло. У мну трансляторолинкер ml.exe сразу после переноса линкера из binr подхватил его самостоятельно. Если не подхватит транслируй с опцией /c и линкуй руками, чтобы получить .com, линкуй с опцией /t btw, имхо под рассылку Калашникова лучше использовать TASM - проблем меньше будет ^____^
ml.exe hello.asm /AT - по идее должен работать ЗЫ Конпелятор должен быть 6.11-6.13, т.к. компоновщик должен быть 16-битным