Za ostale asemblere koji ne podrzavaju invoke treba izmeniti pozive ka Api funkcijama
Primer:
invoke MessageBox,0,addr Text,addr Titl,MB_OK
sa
push MB_OK
push offset Titl
push offset Text
push 0
call MessageBox
U programu su koriscene i neke Masm High Level funkcija (iz masm32.lib) (inString , szRight) koje treba zameniti svojim.
trmPresess.asm
Code:
;(c) Eurora3D Team - http://www.extramedia.co.yu/eurora3d/
;Program za ukidanje procesa / programa
;Koriscenje - Komandna Linija (napisite je u Notepad-u i snimite kao NekoIme.bat
;NAPOMENA : velika i mala slova u imenu programa moraju da budu ista kao u TaskMenageru npr.: notepad.exe ne Notepad.exe
;Komandna Linija : trmProcess C:\NekiProgram.exe ili trmProcess NekiProgram.exe
;Isto vazi i za pozivanje iz nekog drugog programa (C:\trmProcess.exe notepad.exe)
;Program nema GUI i nije vidljiv pri izvrsenju
;Ovaj kod je napisan za Assembler MASM32 sa HighLevel funkcijama
;Komande za assembler MASM32
;C:\Masm32\Bin\ML.EXE /c /coff /Cp /nologo /I"C:\Masm32\Include" "trmProcess.asm"
;i linker
;C:\Masm32\Bin\LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"C:\Masm32\Lib" /OUT:"trmProcess.exe" "trmProcess.obj"
.586
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
include MACROS.ASM
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.data
hSnapShot DD ? ; snapshot handler
hSnapShot2 DD ? ; snapshot handler
myProcess PROCESSENTRY32 <> ; process struktura
hProcess dd ?
.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
.code
; ---------------------------------------------------------------------------
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke GetCommandLine
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
invoke ExitProcess,eax
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL Com[256]:byte
LOCAL blank:DWORD
LOCAL del:DWORD
LOCAL lenn:DWORD
LOCAL buff1[MAX_PATH]:byte
LOCAL buff2[MAX_PATH]:byte
;********************************************************
;Command Line Parser - Uklanjamo prvi deo CommLine (ime programa "trmPrograma ")
invoke lstrcpy,addr Com,CmdLine
invoke lstrlen,addr Com
mov buff1[0],0
mov buff2[0],0
mov lenn,eax
mov blank,eax
mov del,eax
invoke lstrcpy,addr buff1,addr Com
invoke InString,1,addr Com,SADD(" ")
mov blank,eax
.if eax==0
invoke lstrcpy,addr buff1,addr Com
jmp @F
.endif
mov eax,lenn
sub eax,blank
invoke szRight,addr Com,addr buff1,eax
@@:
mov eax,lenn
invoke lstrcpy,addr buff2,addr buff1
invoke InString,1,addr Com,SADD("\")
.while eax!=0
mov del,eax
.if eax<lenn
inc del
.endif
mov edi,lenn
sub edi,del
inc edi
invoke szRight,addr Com,addr buff2,edi
invoke InString,del,addr Com,SADD("\")
.endw
invoke lstrlen,addr buff1
.if eax==0
ret
.endif
invoke lstrlen,addr buff2
.if eax==0
ret
.endif
;Za debugovanje obrisite ; ispred sledece dve linije
;invoke MessageBox,0,addr buff1,SADD("trmProcess"),MB_OK
;invoke MessageBox,0,addr buff2,SADD("trmProcess"),MB_OK
;
;*****************************************************
;Process Unistavanje
pushad
invoke CreateToolhelp32Snapshot, TH32CS_SNAPALL, 0 ; kreiranje snapshot
mov hSnapShot, eax ;cuvanje snapshot hendlera
mov myProcess.dwSize, sizeof myProcess ; podesavamo velicinu Proc. strukture
invoke Process32First,hSnapShot, ADDR myProcess ; dobijamo prvi proces
.while eax; kruzimo kroz sve procese
; Ovde imamo dva if-a jedan za punu aresu programa a drugi samo za ima programa
invoke lstrcmp,addr myProcess.szExeFile,addr buff1
.if eax==0
invoke OpenProcess,PROCESS_ALL_ACCESS, FALSE,myProcess.th32ProcessID
.if eax !=0
mov hProcess,eax
invoke TerminateProcess,hProcess,0
invoke CloseHandle,hProcess
.endif
.endif
invoke lstrcmp,addr myProcess.szExeFile,addr buff2
.if eax==0
invoke OpenProcess,PROCESS_ALL_ACCESS, FALSE,myProcess.th32ProcessID
.if eax !=0
mov hProcess,eax
invoke TerminateProcess,hProcess,0
invoke CloseHandle,hProcess
.endif
.endif
invoke Process32Next,hSnapShot, ADDR myProcess ;dobijamo sledeci proces u eax-u
.endw
invoke CloseHandle,hSnapShot
popad
;**********************************************************
ret
WinMain endp
end start
;(c) Eurora3D Team - http://www.extramedia.co.yu/eurora3d/
;Program za ukidanje procesa / programa
;Koriscenje - Komandna Linija (napisite je u Notepad-u i snimite kao NekoIme.bat
;NAPOMENA : velika i mala slova u imenu programa moraju da budu ista kao u TaskMenageru npr.: notepad.exe ne Notepad.exe
;Komandna Linija : trmProcess C:\NekiProgram.exe ili trmProcess NekiProgram.exe
;Isto vazi i za pozivanje iz nekog drugog programa (C:\trmProcess.exe notepad.exe)
;Program nema GUI i nije vidljiv pri izvrsenju
;Ovaj kod je napisan za Assembler MASM32 sa HighLevel funkcijama
;Komande za assembler MASM32
;C:\Masm32\Bin\ML.EXE /c /coff /Cp /nologo /I"C:\Masm32\Include" "trmProcess.asm"
;i linker
;C:\Masm32\Bin\LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"C:\Masm32\Lib" /OUT:"trmProcess.exe" "trmProcess.obj"
.586
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
include masm32.inc
include MACROS.ASM
includelib user32.lib
includelib kernel32.lib
includelib masm32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.data
hSnapShot DD ? ; snapshot handler
hSnapShot2 DD ? ; snapshot handler
myProcess PROCESSENTRY32 <> ; process struktura
hProcess dd ?
.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
.code
; ---------------------------------------------------------------------------
start:
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke GetCommandLine
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
invoke ExitProcess,eax
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL Com[256]:byte
LOCAL blank:DWORD
LOCAL del:DWORD
LOCAL lenn:DWORD
LOCAL buff1[MAX_PATH]:byte
LOCAL buff2[MAX_PATH]:byte
;********************************************************
;Command Line Parser - Uklanjamo prvi deo CommLine (ime programa "trmPrograma ")
invoke lstrcpy,addr Com,CmdLine
invoke lstrlen,addr Com
mov buff1[0],0
mov buff2[0],0
mov lenn,eax
mov blank,eax
mov del,eax
invoke lstrcpy,addr buff1,addr Com
invoke InString,1,addr Com,SADD(" ")
mov blank,eax
.if eax==0
invoke lstrcpy,addr buff1,addr Com
jmp @F
.endif
mov eax,lenn
sub eax,blank
invoke szRight,addr Com,addr buff1,eax
@@:
mov eax,lenn
invoke lstrcpy,addr buff2,addr buff1
invoke InString,1,addr Com,SADD("\")
.while eax!=0
mov del,eax
.if eax<lenn
inc del
.endif
mov edi,lenn
sub edi,del
inc edi
invoke szRight,addr Com,addr buff2,edi
invoke InString,del,addr Com,SADD("\")
.endw
invoke lstrlen,addr buff1
.if eax==0
ret
.endif
invoke lstrlen,addr buff2
.if eax==0
ret
.endif
;Za debugovanje obrisite ; ispred sledece dve linije
;invoke MessageBox,0,addr buff1,SADD("trmProcess"),MB_OK
;invoke MessageBox,0,addr buff2,SADD("trmProcess"),MB_OK
;
;*****************************************************
;Process Unistavanje
pushad
invoke CreateToolhelp32Snapshot, TH32CS_SNAPALL, 0 ; kreiranje snapshot
mov hSnapShot, eax ;cuvanje snapshot hendlera
mov myProcess.dwSize, sizeof myProcess ; podesavamo velicinu Proc. strukture
invoke Process32First,hSnapShot, ADDR myProcess ; dobijamo prvi proces
.while eax; kruzimo kroz sve procese
; Ovde imamo dva if-a jedan za punu aresu programa a drugi samo za ima programa
invoke lstrcmp,addr myProcess.szExeFile,addr buff1
.if eax==0
invoke OpenProcess,PROCESS_ALL_ACCESS, FALSE,myProcess.th32ProcessID
.if eax !=0
mov hProcess,eax
invoke TerminateProcess,hProcess,0
invoke CloseHandle,hProcess
.endif
.endif
invoke lstrcmp,addr myProcess.szExeFile,addr buff2
.if eax==0
invoke OpenProcess,PROCESS_ALL_ACCESS, FALSE,myProcess.th32ProcessID
.if eax !=0
mov hProcess,eax
invoke TerminateProcess,hProcess,0
invoke CloseHandle,hProcess
.endif
.endif
invoke Process32Next,hSnapShot, ADDR myProcess ;dobijamo sledeci proces u eax-u
.endw
invoke CloseHandle,hSnapShot
popad
;**********************************************************
ret
WinMain endp
end start
Uz primer zakacen je i zip sa sors kodom i napravljenim programom
HomePage http://www.eurora3d.com