Вложений: 1
Код:
include '%fasm%\win64ax.inc'
section '.text' executable
start:
sub rsp,8
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows NT\CurrentVersion\Winlogon',\
NULL,KEY_READ,phkResult
invoke RegQueryValueEx,[phkResult],'shell',NULL,NULL,lpDir,lpcbData
invoke RegCloseKey,[phkResult]
invoke PathRemoveFileSpec,lpDir
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows NT\CurrentVersion\Winlogon',\
NULL,KEY_READ,phkResult
invoke RegQueryValueEx,[phkResult],'shell',NULL,NULL,lpFile,lpcbData
invoke RegCloseKey,[phkResult]
invoke PathStripPath,lpFile
invoke CreateToolhelp32Snapshot,0fh,NULL
mov [handle_snap],rax
mov [pe32.dwSize],sizeof.PROCESSENTRY32
invoke Process32First,[handle_snap],pe32
test eax,eax
jz exit
@@:
invoke Process32Next,[handle_snap],pe32
test eax,eax
jz exit
invoke lstrcmpi,pe32.szExeFile,lpFile
test eax,eax
jnz @r
invoke OpenProcess,1,NULL,[pe32.th32ProcessID]
invoke TerminateProcess,eax,NULL
sh:
invoke ShellExecute,NULL,NULL,lpFile,NULL,lpDir,SW_SHOWNORMAL
exit:
invoke ExitProcess,NULL
section '.data' readable writeable
lpDir db MAX_PATH dup NULL
lpFile db MAX_PATH dup NULL
lpcbData dq MAX_PATH
phkResult dq NULL
handle_snap dq NULL
handle_proc dd NULL
struct PROCESSENTRY32
dwSize dd MAX_PATH
cntUsage dd NULL
th32ProcessID dq NULL
th32DefaultHeapID dq NULL
th32ModuleID dd NULL
cntThreads dd NULL
th32ParentProcessID dd NULL
pcPriClassBase dd NULL
dwFlags dd NULL
szExeFile db MAX_PATH dup NULL
ends
pe32 PROCESSENTRY32
section '.idata' import readable
library advapi32,'ADVAPI32.DLL',kernel32,'KERNEL32.DLL',shlwapi,'shlwapi.dll',shell32,'SHELL32.DLL',user32,'USER32.DLL'
import shlwapi,PathStripPath,'PathStripPathA',PathRemoveFileSpec,'PathRemoveFileSpecA'
include '%fasm%\api\advapi32.inc'
include '%fasm%\api\kernel32.inc'
include '%fasm%\api\shell32.inc'
include '%fasm%\api\user32.inc'
Код:
include '%fasm%\win32ax.inc'
section '.text' executable
start:
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows NT\CurrentVersion\Winlogon',\
NULL,KEY_READ,phkResult
invoke RegQueryValueEx,[phkResult],'shell',NULL,NULL,lpDir,lpcbData
invoke RegCloseKey,[phkResult]
invoke PathRemoveFileSpec,lpDir
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows NT\CurrentVersion\Winlogon',\
NULL,KEY_READ,phkResult
invoke RegQueryValueEx,[phkResult],'shell',NULL,NULL,lpFile,lpcbData
invoke RegCloseKey,[phkResult]
invoke PathStripPath,lpFile
invoke CreateToolhelp32Snapshot,0fh,NULL
mov [handle_snap],eax
mov [pe32.dwSize],sizeof.PROCESSENTRY32
invoke Process32First,[handle_snap],pe32
test eax,eax
jz exit
@@:
invoke Process32Next,[handle_snap],pe32
test eax,eax
jz exit
invoke lstrcmpi,pe32.szExeFile,lpFile
test eax,eax
jnz @r
invoke OpenProcess,1,NULL,[pe32.th32ProcessID]
invoke TerminateProcess,eax,NULL
sh:
invoke ShellExecute,NULL,NULL,lpFile,NULL,lpDir,SW_SHOWNORMAL
exit:
invoke ExitProcess,NULL
section '.data' readable writeable
lpDir db MAX_PATH dup NULL
lpFile db MAX_PATH dup NULL
lpcbData dd MAX_PATH
phkResult dd NULL
handle_snap dd NULL
handle_proc dd NULL
struct PROCESSENTRY32
dwSize dd MAX_PATH
cntUsage dd NULL
th32ProcessID dd NULL
th32DefaultHeapID dd NULL
th32ModuleID dd NULL
cntThreads dd NULL
th32ParentProcessID dd NULL
pcPriClassBase dd NULL
dwFlags dd NULL
szExeFile db MAX_PATH dup NULL
ends
pe32 PROCESSENTRY32
section '.idata' import readable
library advapi32,'ADVAPI32.DLL',kernel32,'KERNEL32.DLL',shlwapi,'shlwapi.dll',shell32,'SHELL32.DLL',user32,'USER32.DLL'
import shlwapi,PathStripPath,'PathStripPathA',PathRemoveFileSpec,'PathRemoveFileSpecA'
include '%fasm%\api\advapi32.inc'
include '%fasm%\api\kernel32.inc'
include '%fasm%\api\shell32.inc'
include '%fasm%\api\user32.inc'
Программа которая выгружает explorer.exe, а потом загружает (x64) & (x86)
:)
Что будет я не знаю, я например использую не explorer.exe оболочку.
Какраз код проверяет то, что установленно чтобы не было проблем.
32битный код я плохо проверил, так как сидел в x64 системе, но через это
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon
проверил запуск калькулятора, вроде бы нормально!
:ninja2:
секцию: section '.rsrc' resource readable, в исходнике можно удалить
|