Time of Update: 2018-12-03
以前知道XP 32位系統每個進程都有獨立4G空間,應用佔用低2G,核心程式佔用高2G,但是這隻是預設情況,因為這個比例是可以調整的。===以下為轉載=======/3GB 將使用者地址空間從2GB增加到3GB.提高大型資料庫及應用程式效能.只適用於NT4 企業版,2000進階伺服器版, 2000資料中心伺服器版,XP以上版本Windows. /BASEVIDEO 只載入標準顯示器驅動(vga.sys)/BAUDRATE= 指定偵錯模式時的傳輸速率,預設為19200.(例如/BAUDRATE=11
Time of Update: 2018-12-03
反組譯碼核心功能的時候經常會看到mov eax, fs:[124].一直沒弄清楚fs寄存器在ring0存放的是什麼。今天查了下資料。 fs寄存器在Ring0中指向一個稱為KPCR的資料結構,即FS段的起點與KPCR結構對齊。 具體如下:kd> dt _KPCRnt!_KPCR +0x000 NtTib : _NT_TIB +0x01c SelfPcr : Ptr32 _KPCR +0x020 Prcb
Time of Update: 2018-12-03
虛擬機器是XP情況:啟動項添加調試啟動,並設定傳輸速率為115200具體操作可在boot.ini中添加如下代碼:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindows XP Professional" /noexecute=optin /fastdetect /debug/debugport=com1 /baudrate=115200虛擬機器是WIN7
Time of Update: 2018-12-03
NMHDR = Notify Message Handler[cpp] view plaincopytypedef struct tagNMHDR { HWND hwndFrom; UINT_PTR idFrom; UINT code; } NMHDR; 訊息通過下面的宏定義之: ON_NOTIFY( wNotifyCode, idControl, memberFxn ) wNotifyCode
Time of Update: 2018-12-03
磁碟上的資料按照其不同的特點和作用大致可分為5部分:MBR區、DBR區、FAT區、DIR區和DATA區。我們來分別介紹一下:(1)MBR區(主開機磁區) MBR(Main Boot Record),按其字面上的理解即為主引導記錄區,位於整個硬碟的0磁軌0柱面1扇區。不過,在總共512位元組的主開機磁區中,MBR只佔用了其中的446個位元組(位移0--位移1BDH),另外的64個位元組(位移1BEH--位移1FDH)交給了DPT(Disk Partition
Time of Update: 2018-12-03
編譯參數的設定主要通過VC的功能表項目Project->Settings->C/C++頁來完成。我們可以看到這一頁的最下面Project Options中的內容,一般如下:/nologo/MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D"_AFXDLL" /D "_MBCS" /Fp"Debug/WritingDlgTest.pch" /Yu"stdafx.h"/Fo"Debug/" /Fd"Debug/"
Time of Update: 2018-12-03
IDT,Interrupt Descriptor Table,中斷描述符表是CPU用來處理中斷和程式異常的。 一、有關IDT的基本知識1、中斷時一種機制,用來處理硬體需要向CPU輸入資訊的情況。 比如滑鼠,鍵盤等。2、中斷和異常的產生是隨機的,在CPU正常運行過程中隨時可能產生。CPU的中斷處理機制3、中斷可以由硬體產生(稱為外部中斷),也可以由軟體產生(稱為內部中斷),在程式中寫入int
Time of Update: 2018-12-03
SIG在IDA中相當於符號檔案的作用,如果是自己寫的PE程式,編譯後會有OBJ檔案,可以通過工具把它轉化為一個SIG 便於在IDA觀看。要應用SIG需要把SIG檔案拷貝到IDA目錄下的sig檔案夾中,然後在IDA中shift+F5在右鍵添加相應添加相應的項目,反組譯碼中的函數名就會變為原本的函數名,這樣方便查看。如果是第三方lib 也可以轉換出一個sig 其中轉換需要用到的工具有 pcf.exe link.exe sigmake.exe
Time of Update: 2018-12-03
宏意思是來源程式中的一段有獨立功能的程式碼巨集指令,使用者自訂的指令。編程式時候,將多次使用的功能用一條巨集指令來代替。彙編包括指令 ,偽指令,巨集指令。前兩個都是規定的,最後一個是你自己設計的。好處是用起來方便,::))定義就是為了使用,但是要先定義,後調用。(這一點和子程式可是不一樣啊)例如,宏定義,兩個字相乘multiply MACRO opr1, opr2, resultpush dxpush axmov ax,opr1imul opr2mov result, axpop axpop
Time of Update: 2018-12-03
二進位整數轉換相信大家都會了,但二進位的小數怎麼轉換,這個問題很好,因為很少會碰到小數的轉換,所以一般老師都不會注重的講,也就被忽略了。在這裡我給大家一點提示:在二進位的整數轉換中,如(100110101)B=1×28+0×27+0×26+1×25+1×24+0×23+1×22+0×21+1×20在整個轉換過程中,2的冪從0~8;而如果是小數,如(1101.1011)B=1×23+1×22+0×21+1×20+1×2-1+0×2-2+1×2-3+1×2-4 =8+4
Time of Update: 2018-12-03
setlocale:函數原形為:char *setlocale( int category, const char *locale );標頭檔:<locale.h>所支援的作業系統為:ANSI, Win 95, Win NT對於簡體中文可以使用如下設定:setlocale( LC_ALL, "chs"
Time of Update: 2018-12-03
問:怎麼在VC6中把工程編譯成release版本?答:可以project->Set Active Config,選中release版本。此後,按F5或F7編譯所得的結果就是release版本。 出現的問題:vc6.0在設定選了win32 release,但是點了確定再開啟設定,為什麼又變成Win32 Debug了?工程設定對話方塊中顯示的只是當前使用的版本,並不是用來設定編譯版本的。 如果要改變當前工程的版本配置,可以在工具列上點右鍵,選中“build”選項(不是“mini build”)
Time of Update: 2018-12-03
函數RtlAdjustPrivliege封裝在NtDll.dll中(在所有DLL載入之前載入),被微軟嚴格保密,就是說你在MSDN上查不到關於他的任何資訊。先來看看這個函數的定義(Winehq給出):NTSTATUS RtlAdjustPrivilege(ULONG Privilege,BOOLEAN Enable,BOOLEAN CurrentThread,PBOOLEAN Enabled)參數的含義:Privilege [In] Privilege index tochange.
Time of Update: 2018-12-03
重複首碼 REP/REPE/REPNE/REPZ/REPNZ rep movsb用彙編文法來描述就是:s: movsb loop s這樣REP/REPE/REPNE/REPZ/REPNZ後的指令,先執行一下,再查條件!類似於.repeat 指令 [.break [.if 允出準則]] [.continue].until重複首碼是用來控制其後的基本串操作指令是否重複,因而重複首碼不能單獨使用。(1).
Time of Update: 2018-12-03
FATAL 嚴重錯誤cannot open file不能開啟檔案 I/O error closing fileI/O錯誤 正在關閉檔案I/O error writing fileI/O錯誤 正在寫檔案I/O error reading file I/O錯誤 正在讀取檔案out of memory 缺少記憶體assembler limit : macro parameter name table full
Time of Update: 2018-12-03
網上找了很多資料,都不好使。相信有很多像我一樣偏好VC6.0的傢伙,最新的WDK真的用不了嗎?必須可以!!! 開始之前要一定要明確一件事情,單獨使用WDK+記事本就可以開發驅動,和VC的編譯器耗無關係,而使用VC的唯一目的,就是把它當作超級記事本,這樣可以省去自己維護Makefile的麻煩,並且擁有IDE的其他各種便捷。1.安裝好VC6和DWK,先後順序無關。 從開始菜單找到WDK的程式目錄,進入“Windows XP Checked Build Environment”,輸入命令"
Time of Update: 2018-12-03
位元運算是C語言的一大特色,利用異或運算可以實現交換兩個數,原理是一個整數與另外一個數進行兩次異或運算仍然是其本身,基本原理用式子表達如下:(1) A ^ A = 0;(2) A = A ^B;(3) B = A ^B;(相當於B = A ^ B ^ B ,即 B = A)(4) A= A ^ B;(相當於A = A ^B ^A ,即A =
Time of Update: 2018-12-03
vm虛擬機器安裝系統後出現operating system not found解決辦法不知你使用那種軟體分的區? 用DIANGEN的話,它本來就清楚列明了啟用分區選項的。如果用PQ分區的話,還必須將C:盤作為主引導區,在格式化欄目中選用[進階],然後再將其設定成‘作用’的,才能將C:盤啟用,否則安裝系統後無法引導啟動的。前幾天裝VM虛擬機器,建立虛擬機器=》分區=》裝系統。可是每當系統裝好後再重啟總是提示operating system not
Time of Update: 2018-12-03
MmGetSystemRoutineAddress這個函數也是比較有用的,是得到系統匯出函數的地址,不過網上都是寫了一堆彙編代碼在哪裡,根本沒有可讀性,還不如用IDA看呢。下面的函數是摘自ReactOS項目的代碼: PVOID NTAPI MmGetSystemRoutineAddress(IN PUNICODE_STRING SystemRoutineName) { PVOID ProcAddress = NULL;
Time of Update: 2018-12-03
CLD與STD是用來操作方向標誌位DF(Direction Flag)。CLD使DF複位,即DF=0,STD使DF置位,即DF=1.用於串操作指令中。組合語言中,串操作指令LODSB/LODSW是塊裝入指令,其具體操作是把SI指向的儲存單元讀入累加器,其中LODSB是讀入AL,LODSW是讀入AX中,然後SI自動增加或減小1或2位.當方向標誌位D=0時,則SI自動增加;D=1時,SI自動減小。STOSSTOSBSTOSWSTOSD儲存字串資料(Store String