Ни фига не получается, решил сделать немного по-другому:
схема такова: 1)хук -> 2)поиск потоков текущего -> 3)заставляем поток engine или core выполнить наши команды -> 4) выходим из хук процедуры
Застрял на 2, не могу получить список потоков системы, в отладчике постоянно пишет после Thread32First - Error_bad_length
FASM:
Код:
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32a.inc'
struct PROCESSENTRY32
dwSize dd ?
cntUsage dd ?
th32ProcessID dd ?
th32DefaultHeapID dd ?
th32ModuleID dd ?
cntThreads dd ?
th32ParentProcessID dd ?
pcPriClassBase dd ?
dwFlags dd ?
szExeFile rb 260h
ends
section '.data' data readable writeable
Handle dd ?
DllName db 'One.dll',0
msg db 'Hook works!',0
msg1 db 'Nice',0
msg3 db 'bad',0
pe32 PROCESSENTRY32 ?
section '.code' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
invoke DisableThreadLibraryCalls,[hinstDLL]
invoke CreateToolhelp32Snapshot,8,0
mov [Handle],eax
mov eax,sizeof.PROCESSENTRY32
mov [pe32.dwSize], eax
invoke Thread32First,[Handle],pe32 ; - здесь проблемка
cmp eax,0 ; проверка результата
jz .Figovo
mov eax,1
ret
.Figovo:
invoke MessageBoxA,0,msg3,msg3,MB_OK
mov eax,1
ret
endp
MSDN CreateToolhelp32Snapshot
Попутно смотрел
1)
Руткит
2)
Аналог то, что я щас пишу
Кто сталкивался с проблемкой?