.386
.model flat, stdcall
option casemap:none
include ntdll.inc
includelib ntdll.lib
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
.data?
hs dd ?
x dd ?
.code
align 2
z dd 0
y dd 0ffffh
li dd 0f0000h,0
dn dw '\','D','e','v','i','c','e','\','p','h','y','s','i','c','a','l','m','e','m','o','r','y',0
align 4
dp word 2ch,2eh
dword offset dn
oa dd 24,0,offset dp,64,0,0
fn db "blos.dat",0
notice db "获取blos数据成功,就在本目录的blos.dat",13,10,
"因为写文件是同步或异步怎么的,请等几秒",13,10,
"注意:用16进制编辑器查看。",0
correy db "made by correy",0
start:invoke ZwOpenSection,addr hs,4,addr oa
invoke ZwMapViewOfSection,hs,0ffffffffh,addr z,0,0ffffh,addr li,addr y,1,0,2
invoke CreateFile,addr fn,0c0000000h,0,0,2,80h,0
push eax
invoke WriteFile,eax,z,65536,addr x,0
pop eax
invoke CloseHandle,eax
invoke MessageBox,0,addr notice,addr correy,0
invoke ExitProcess,0;不加好像运行也没事。
end start
;made at 2010.03.24
;注释:本文改编自网络上的c++代码。
;本文没有考虑失败的情况。
;不足之处,敬请指导:
;QQ:112426112
;Email:leguanyuan at 126 dot com
;Homepage:http://correy.webs.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;附一个快速关机的小程序:
.386
.model flat, stdcall
option casemap:none
include ntdll.inc
includelib ntdll.lib
.code
start:invoke RtlAdjustPrivilege,13h,1,0,esp
invoke NtShutdownSystem,0
end start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;本来想写成控制台程序的,一想没有必要,关键是操作这几个函数。;更多的参数与结构,请网上搜索。
;本人注重实践,贴完整的代码,并调试可以运行至成功。
.386
.model flat, stdcall
option casemap:none
include windows.inc
include ntdll.inc
includelib ntdll.lib;没有这个,可以动态加载,再找函数的地址。
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
.code
y dd ?
x dd ?
bufferl db 8 dup (?),0
showeax proc ;把eax的值显示出来,存放在bufferl中。
pushad
mov ecx,8
xor esi,esi
againp:dec ecx
rol eax,4
push eax
and eax,0Fh
cmp eax,9
jg big
add eax,30h
mov [bufferl+esi],al
pop eax
inc esi
cmp ecx,0
jne againp
je showp
big:add eax,37h
mov [bufferl+esi],al
pop eax
inc esi
cmp ecx,0
jne againp
showp:popad
ret
showeax endp
start:
invoke ZwQuerySystemInformation,5,0,0,addr x
invoke GetProcessHeap
invoke HeapAlloc,eax,0,x
mov y,eax
invoke ZwQuerySystemInformation,5,y,x,0
mov esi,y
.while dword ptr [esi]!=0
mov eax, [esi+044h]
call showeax
invoke MessageBox,0,addr bufferl,0,0;显示pid.
invoke MessageBoxW,0,[esi+03ch],0,0;显示程序名。
add esi,[esi]
.endw
mov eax, [esi+044h];因为上面少显示一个,所以在这里补上。
call showeax
invoke MessageBox,0,addr bufferl,0,0;显示pid.
invoke MessageBoxW,0,[esi+03ch],0,0;显示程序名。
call showeax
invoke MessageBox,0,addr bufferl,0,0;显示pid.
invoke MessageBoxW,0,[esi+03ch],0,0;显示程序名。
invoke ExitProcess,0;
end start
;made at 2010.04.09
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;在电脑启动时显示字符,我想肯定也能显示图片。像瑞星那样。
;注意编译的平台是native,后缀名不可以是sys。
;把本文件拷贝到%windir%\system32\的目录下。
;更改regedit中的HKLM\SYSTEM\CurrentControlSet\Control\Session Manager的右方BootExecute鍵值,為 autocheck autochk * native。
;或在cmd.exe中輸入 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v BootExecute /t REG_MULTI_SZ /d "autocheck autochk *\0native\0" /f
;说明:上量行的native是程序名,可以改变。随文件名而改变。
;重新启动,观看。
;本文改编自网上的c/c++代码。
.386
.model flat, stdcall
option casemap:none
include ntdll.inc
includelib ntdll.lib;没有这个,可以动态加载,再找函数的地址。
.code
align 2
szcorrey dw 'm','a','d','e',' ','b','y',' ','c','o','r','r','e','y',0
align 4
correy dw sizeof szcorrey -2
dw sizeof szcorrey
dd offset szcorrey
start:
invoke NtDisplayString,addr correy
invoke NtTerminateProcess,-1,0
end start
;made at 2010.04.10
;注意编译的平台是native,后缀名不可以是sys。
;把本文件拷贝到%windir%\system32\的目录下。
;更改regedit中的HKLM\SYSTEM\CurrentControlSet\Control\Session Manager的右方BootExecute鍵值,為 autocheck autochk * native。
;或在cmd.exe中輸入 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" /v BootExecute /t REG_MULTI_SZ /d "autocheck autochk *\0native\0" /f
;说明:上量行的native是程序名,可以改变。随文件名而改变。
;重新启动,观看。
;本文改编自网上的c/c++代码。
.386
.model flat, stdcall
option casemap:none
include ntdll.inc
includelib ntdll.lib;没有这个,可以动态加载,再找函数的地址。
.code
align 2
szcorrey dw 'm','a','d','e',' ','b','y',' ','c','o','r','r','e','y',0
align 4
correy dw sizeof szcorrey -2
dw sizeof szcorrey
dd offset szcorrey
start:
invoke NtDisplayString,addr correy
invoke NtTerminateProcess,-1,0
end start
;made at 2010.04.10
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;说明本文改变自网上的c/c++代码。
.386
.model flat, stdcall
option casemap:none
include windows.inc
include ntdll.inc
includelib ntdll.lib;没有这个,可以动态加载,再找函数的地址。
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
include Advapi32.inc
includelib Advapi32.lib
.code
bufferl db 8 dup (?),0
align 4
KdVersionBlock db 28h dup (?),0
showeax proc ;把eax的值显示出来,存放在bufferl中。
pushad
mov ecx,8
xor esi,esi
againp:dec ecx
rol eax,4
push eax
and eax,0Fh
cmp eax,9
jg big
add eax,30h
mov [bufferl+esi],al
pop eax
inc esi
cmp ecx,0
jne againp
je showp
big:add eax,37h
mov [bufferl+esi],al
pop eax
inc esi
cmp ecx,0
jne againp
showp:popad
ret
showeax endp
szSeDebugPrivilege db "SeDebugPrivilege",0
align 4 ;更通用的做法是在ml 的后面加 /Zp4
priv dd 1,0,0,2
rv dd ?
htoken dd ?
szkernbase db "kernbase",0
szpsloadedmodulelist db "psloadedmodulelist",0
szdebuggerdatalist db "debuggerdatalist",0
start:
invoke LookupPrivilegeValue,0,addr szSeDebugPrivilege,addr priv+4
invoke GetCurrentProcess
invoke OpenProcessToken,eax,32,addr htoken
invoke AdjustTokenPrivileges,htoken,0,addr priv,16,0,0
invoke ZwSystemDebugControl,7,0,0,addr KdVersionBlock,28h,0
mov eax,dword ptr [KdVersionBlock+10h]
call showeax
invoke MessageBox,0,addr bufferl,addr szkernbase,0
mov eax,dword ptr [KdVersionBlock+18h]
call showeax
invoke MessageBox,0,addr bufferl,addr szpsloadedmodulelist,0
mov eax,dword ptr [KdVersionBlock+20h]
call showeax
invoke MessageBox,0,addr bufferl,addr szdebuggerdatalist,0
invoke ExitProcess,0;
end start
;made at 2010.04.12
.386
.model flat, stdcall
option casemap:none
include windows.inc
include ntdll.inc
includelib ntdll.lib;没有这个,可以动态加载,再找函数的地址。
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
include Advapi32.inc
includelib Advapi32.lib
.code
bufferl db 8 dup (?),0
align 4
KdVersionBlock db 28h dup (?),0
showeax proc ;把eax的值显示出来,存放在bufferl中。
pushad
mov ecx,8
xor esi,esi
againp:dec ecx
rol eax,4
push eax
and eax,0Fh
cmp eax,9
jg big
add eax,30h
mov [bufferl+esi],al
pop eax
inc esi
cmp ecx,0
jne againp
je showp
big:add eax,37h
mov [bufferl+esi],al
pop eax
inc esi
cmp ecx,0
jne againp
showp:popad
ret
showeax endp
szSeDebugPrivilege db "SeDebugPrivilege",0
align 4 ;更通用的做法是在ml 的后面加 /Zp4
priv dd 1,0,0,2
rv dd ?
htoken dd ?
szkernbase db "kernbase",0
szpsloadedmodulelist db "psloadedmodulelist",0
szdebuggerdatalist db "debuggerdatalist",0
start:
invoke LookupPrivilegeValue,0,addr szSeDebugPrivilege,addr priv+4
invoke GetCurrentProcess
invoke OpenProcessToken,eax,32,addr htoken
invoke AdjustTokenPrivileges,htoken,0,addr priv,16,0,0
invoke ZwSystemDebugControl,7,0,0,addr KdVersionBlock,28h,0
mov eax,dword ptr [KdVersionBlock+10h]
call showeax
invoke MessageBox,0,addr bufferl,addr szkernbase,0
mov eax,dword ptr [KdVersionBlock+18h]
call showeax
invoke MessageBox,0,addr bufferl,addr szpsloadedmodulelist,0
mov eax,dword ptr [KdVersionBlock+20h]
call showeax
invoke MessageBox,0,addr bufferl,addr szdebuggerdatalist,0
invoke ExitProcess,0;
end start
;made at 2010.04.12
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;我就有点佩服自己了!
;但因为少写一个问号而忙活了一天。
.386
.model flat, stdcall
option casemap:none
include ntdll.inc
includelib ntdll.lib
.code
align 4
iosb dd 2 dup (0)
fileHandle dd 0
align 2
szcorrey dw '\','?','?','\','c',':','\','c','o','r','r','e','y','.','t','x','t',0
align 4
fileName dw sizeof szcorrey -2
dw sizeof szcorrey
dd offset szcorrey
fileAttributes dd 18h,0,offset fileName,40h,0,0
buffer db "made by correy",13,10,
"QQ:112426112",13,10,
"Email:leguanyuan at 126 dot com",13,10,
"Homepage:http://correy.webs.com",13,10,0
start:;下一步把代码写成数据,没有代码一样运行程序,可以不?
invoke NtCreateFile,addr fileHandle,1F01ffh,addr fileAttributes,addr iosb,0,1,0,2,060h,0,0
invoke NtWriteFile,fileHandle,0,0,0,addr iosb,addr buffer,sizeof buffer-1,0,0
ret ;改用这个会更好:invoke NtTerminateProcess,-1,0
end start
;made at 2010.04.13
;但因为少写一个问号而忙活了一天。
.386
.model flat, stdcall
option casemap:none
include ntdll.inc
includelib ntdll.lib
.code
align 4
iosb dd 2 dup (0)
fileHandle dd 0
align 2
szcorrey dw '\','?','?','\','c',':','\','c','o','r','r','e','y','.','t','x','t',0
align 4
fileName dw sizeof szcorrey -2
dw sizeof szcorrey
dd offset szcorrey
fileAttributes dd 18h,0,offset fileName,40h,0,0
buffer db "made by correy",13,10,
"QQ:112426112",13,10,
"Email:leguanyuan at 126 dot com",13,10,
"Homepage:http://correy.webs.com",13,10,0
start:;下一步把代码写成数据,没有代码一样运行程序,可以不?
invoke NtCreateFile,addr fileHandle,1F01ffh,addr fileAttributes,addr iosb,0,1,0,2,060h,0,0
invoke NtWriteFile,fileHandle,0,0,0,addr iosb,addr buffer,sizeof buffer-1,0,0
ret ;改用这个会更好:invoke NtTerminateProcess,-1,0
end start
;made at 2010.04.13
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.386
.model flat, stdcall
option casemap:none
include ntddk.inc
include ntdll.inc
includelib ntdll.lib
.code
align 4
ci dd 3488,0 ;第一个数是你要结束的进程的pid
hp dd 0
fa dd 18h,0,0,40h,0,0;在内核驱动中,请把第四个数改为240h.
start:
invoke ZwOpenProcess,addr hp,PROCESS_ALL_ACCESS,addr fa,addr ci
invoke ZwTerminateProcess,hp,0
ret ;改用这个会更好:invoke NtTerminateProcess,-1,0
end start
;made at 2010.06.16
没有评论:
发表评论