?? history.txt
字號:
3/15/2005
---------------------------
2k3下測試有點小問題,要改一下源碼:xidt.cpp:
--------------------------------------------------------------------------------
BOOL AdjustTocken(LPCTSTR tocken)
{
HANDLE hToken = NULL;
TOKEN_PRIVILEGES tkp;
BOOL bRet = FALSE;
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) &&
LookupPrivilegeValue(NULL, tocken, &tkp.Privileges[0].Luid) &&
(SetLastError(0),TRUE) &&
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0) &&
GetLastError() == 0)
{
bRet = TRUE;
}
if(hToken) CloseHandle(hToken);
return bRet;
}
BOOL CXIdtApp::InitInstance()
{
AdjustTocken(SE_LOAD_DRIVER_NAME);
--------------------------------------------------------------------------------
3/14/2005
-----------
- First release
備份及恢復IDT的小工具,支持win2k/xp/2003。
主界面上有四個按鈕:
show : 查看當前idt.
save : 存檔:保存當前的idt到文件。
load : 讀檔:從文件中讀出idt.
write: 將idt寫入到系統中!
實現說明:
事實上,我寫了一個dll,krmem.dll這個dll的功能很簡單,從內核讀入內存或向內核寫入內存。利用這個功能,就可以寫出這個idt工具了。事實上,還可以寫出更多的好工具。
krmem.dll導出三個函數:
#define KRIMPORT __declspec(dllimport)
KRIMPORT BOOL WINAPI KmOperation(IN const PVOID pSrc,OUT PVOID pdst,SIZE_T len);
KRIMPORT BOOL WINAPI KReadMemory(IN const PVOID pSrc,OUT PVOID pdst,SIZE_T len);
KRIMPORT BOOL WINAPI KWriteMemory(OUT PVOID pdst,IN const PVOID pSrc,SIZE_T len);
KmOperation:相當于memcpy,只是copy的地址psrc和pdst都可以是內核地址。
KReadMemory:讀取內存,它是用KmOperation實現的。
KWriteMemory:寫入內存,它也是用KmOperation實現的。
程序通過sidt指令得到idt地址,通過KReadMemory或KWriteMemory實現idt表的讀取和寫入。
作者:goldenegg
原文:http://bbs.pediy.com/showthread.php?s=&postid=76530#post76530
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -