Time of Update: 2018-12-07
文章目錄 有幾個概念需要重新梳理一下。 Cylinder-head-sector(CHS) 這裡的Cylinder和track容易搞混,track是一個平面的東西,而Cylinder相當於多個track豎著疊起來,形成一個柱狀。 CHS可以有三組數字,定位在硬碟中的某一個扇區。可以用LBA (Logical block address)來說明。LBA 可以和CHS三元組進行相互換算。
Time of Update: 2018-12-07
主要是兩類:不改變特權、改變特權1. 不改變特權級可以用段間、段內的call或者jmp。段間不做判斷。段間會看目的段是什麼程式碼片段。如果是非一致程式碼片段,則必須CPL=DPL,並且RPL<=DPL。跳轉後CPL不變。 如果是一致程式碼片段,對RPL不做判斷,則必須CPL>=DPL,即外環可以跳入內環,但CPL不變。2. 改變特權級,必須通過門(調用門、任務門、中斷門、陷阱門)。通過門由外環跳入內環,通過ret、lret、inet跳回外環。
Time of Update: 2018-12-07
1.例如, .PHONY : clean clean : -rm edit $(objects).PHONY意思表示clean是一個“偽目標”2.在rm命令前面加了一個小減號的意思就是,也許某些檔案出現問題,但不要管,繼續做後面的事。3. $@表示目標檔案,(因為@很像靶子,target) $<表示依賴檔案4.靜態模式 objects = foo.o bar.o all: $(objects) $(objects): %.o: %.c
Time of Update: 2018-12-07
Emacs有三種Lisp模式,其命令名稱如下: emacs-lisp-mode 用於Emacs Lisp代碼的編輯(檔案名稱.emacs或尾碼.el) lisp-mode 用來編輯另一個Lisp系統的Lisp代碼(尾碼.l或.lisp) lisp-interaction-mode 用來編輯和運行Emacs Lisp代碼(互動模式)本文只討論
Time of Update: 2018-12-07
Makefile中的-include XXX表示如果XXXX檔案不存在,不會報錯。Makefile會間接包含\tools\rbuild\rbuild.mak。這裡簡單分析工具rbuild 在reactos的根目中,執行 make rbuild_clean make rbuild rbuild會根據ReactOS-i386.rbuild產生makefile.auto檔案,然後makefile.auto會被Makefile包含
Time of Update: 2018-12-07
一般情況下,需要先安裝VC6,然後再安裝DDK2000。 由於這次我安裝的是VC6的綠色版,所以很多東西沒有註冊。 DDK2000自己的批處理會調用vccheck.exe,它回去尋找VC的安裝位置。由於我安裝的是綠色版的VC,所以肯定是找不到正確路徑的。需要自己修改一下註冊表。 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevStudio]
Time of Update: 2018-12-07
ReactOS預設的log是關閉的,在進入系統選擇菜單“ReactOS (Debug)”,此時log通過串口輸出。列印log可以使用DbgPrint函數。NDEBUG宏控制DBG版本中輸出log。在每個module裡都定義了NDEBUG宏,如果想在DBG版本裡列印log就注釋掉NDEBUG宏。此時DPRINT,DPRINT1等輸出log的宏被enable。 對於freeldr,也是用DbgPrint函數。在debug.c裡修改下列宏,可以控制是否在DBG版本裡列印log://#define
Time of Update: 2018-12-07
共三種描述符:儲存段描述符、系統段描述符、門描述符。 描述符可以放在GDT、LDT、IDT(它只記錄中斷門和陷阱門)中。其中儲存段描述符和系統段描述符記錄的的都是一段記憶體,而門描述符只記錄一個入口地址。當DT=1時,為儲存段描述符。類型有 當DT=0時,為系統段描述符。門描述符有四類:任務門,調用門,中斷門,陷阱門
Time of Update: 2018-12-07
思路來源於看雪的一篇文章:
Time of Update: 2018-12-07
修改自https://forum.eviloctal.com/thread-28859-1-1.html在VC6編譯通過#include <stdio.h>#include <windows.h>// 儲存原始的6個位元組代碼BYTE orig_code[6] = {0x90, 0x90, 0x90, 0x90, 0x90,0x90};// JMP 0xXXXXXXXXBYTE hook_code[5] = { 0xe9, 0, 0, 0, 0 };BYTE
Time of Update: 2018-12-07
1.匯入函數(1)如果程式靜態串連時,聲明函數採用了__declspec(dllimport) 調用Foo時,被翻譯成call [_imp_Foo]其中_imp_Foo是idata節裡面的資料,dll的loader會修改這個地址裡的數值。_imp_Foo是FirstTrunk值。(2)如果程式靜態串連時,沒有採用了__declspec(dllimport) 調用Foo時,被翻譯成call _Foo而編譯器會自動產生_Foo函數,這隻是個軀殼。_Foo:jump
Time of Update: 2018-12-07
gcc可以通過-Wl將參數傳入ld命令 GCC: -Wl,optionPass option as an option to the linker. If option contains commas, it is split into multiple options at the commas.LD:-Tbss org -Tdata org -Ttext orgSame as –section-start, with .bss, .data or .text as
Time of Update: 2018-12-07
kd> x nt!MmSystem* 80469b80 nt!MmSystemDriverPage = <no type information> 80469508 nt!MmSystemLockOwner = <no type information> 8047e940 nt!MmSystemPageDirectory = <no type information> 80470ad4
Time of Update: 2018-12-07
ObInit會被調用兩次,ObpInitializationPhase分別為TRUE和FALSE的時候。在ObpInitializationPhase==TURE時,建立根目錄\和\ObjectTypes 在ObpInitializationPhase==FALSE時,調用ObCreateObjectType,建立\ObjectTypes中下的的Type、Directory、SymbolicLink等。 根目錄\和\ObjectTypes ObInit() { …
Time of Update: 2018-12-07
//////////////////////////////////////// // New Deployment Module for rootkit 040 // ------------------------------------- // -Greg Hoglund http://www.rootkit.com //////////////////////////////////////// #include <windows.h> #include <stdio.
Time of Update: 2018-12-07
1.httpd.conf中確保LoadModule rewrite_module modules/mod_rewrite.so2.<Directory "C:/php/mywork">… #AllowOverride None改成 AllowOverride All … </Directory>3.實驗一建立一個.htaccess檔案,目的是將alice.html=>bob.htmlRewriteEngine onRewriteRule
Time of Update: 2018-12-07
其中的errorLogEntry->ErrorCode = 100會在 ------------------------------------------------------------------void Test(PDRIVER_OBJECT pDriverObject){KdPrint(("Test()!\n"));PIO_ERROR_LOG_PACKET errorLogEntry =
Time of Update: 2018-12-07
1.以前的一個誤解在ring3時候,fs段指向的是TEB。以前一直有個誤解,fs:[0]和fs:[1]記錄著EXCEPTION_REGISTRATION其實不然,而是fs:[0]記錄著EXCEPTION_REGISTRATION的指標。2.資料結構,它可以形成一個鏈表,這個鏈表的首地址記錄在fs:[0],其中handle是異常處理函數。_EXCEPTION_REGISTRATION struc prev dd ? handler dd
Time of Update: 2018-12-07
----------------------------------------------------------------------------------------------------void foo(){PUCHAR pBuffer = NULL;*pBuffer = 'a';}void Test(){KdPrint(("Test()!\n"));__try{foo();}__except(EXCEPTION_EXECUTE_HANDLER){NTSTATUS nStats =
Time of Update: 2018-12-07
http://svn.reactos.org/reactos/tags/ReactOS-0.3.14/http://svn.reactos.org/reactos/tags/ReactOS-0.3.9/reactos/http://svn.reactos.org/reactos/tags/ReactOS-0.3.3/reactos/ 可以證明用RosBE-1.4.5.exe編譯ReactOS-0.3.9在編譯ReactOS-0.3.3的時候,用RosBE-1.4.5編譯會出現一點小問題。解決方案