原创 使用CreateRemoteThread進行Dll注入(Win7-x86\x64 Win10-x86\x64)

回顧之前學習過的注入方法,首先就來這個最常見的CreateRemoteThread函數來實施注入吧,該代碼支持Win7和Win10下的32位對32位,64位對64位的注入,代碼中用到的東西還比較多,一些函數是我在其他地方收集的,由

原创 Linux使用fork()方法創建進程

在做操作系統的實驗過程中,自己安裝了Ubuntu(18.04.1)64位,在這裏給大家安利一個VX公衆號:軟件安裝管家。這裏真的有好多好多的軟件,非常全面並且安裝教程非常詳細,強烈推薦!!! 在此聲明,我所有代碼都是基於Ubunt

原创 反轉列表測試--劍指offer題目

typedef struct _LIST_NODE_ { struct _LIST_NODE_* Next;//下一個節點 int Data; }LIST_NODE, *PLIST_NODE; void main() {

原创 內存修改(Ring3)

Ring3對目標進程的內存進行修改,說一下實現思路: (1)調用GetSystemInfo函數得到系統信息,將應用層程序最大地址和頁面大小保存到全局變量中 (2)通過目標進程的進程名得到目標進程ID 拍攝進程快照CreateTo

原创 Windows控制寄存器CR0/1/2/3/4(Windows內核學習筆記)

1.概述 控制寄存器用於控制和確定CPU的操作模式。主要有:CR0\CR1\CR2\CR3\CR4 2.CR0寄存器 PE:啓用保護模式標誌,1是保護模式,0是實模式,這個位只是開始或關閉段機制,並沒有啓用分頁機制 PG:分頁機

原创 進程相關的函數

得到當前進程進程的EPROCESS、當進程的ID、當前進程的句柄 FORCEINLINE PKTHREAD KeGetCurrentThread(VOID) { return (struct _KTHREAD *)__re

原创 淺談MDL(貳)(Windows內核學習筆記)

續上一篇: //MmProbeAndLockPages例程探測指定的虛擬內存頁,使它們駐留並鎖定他們所在的那片物理內存。 VOID NTAPI MmProbeAndLockPages(IN PMDL Mdl,

原创 ObpLookupEntryDirectory(Windows內核學習筆記)

PVOID NTAPI ObpLookupEntryDirectory(IN POBJECT_DIRECTORY Directory, IN PUNICODE_STRING Name

原创 InlineHook--Ring3

實現思路: 使用GetProcAddress得到函數地址,將函數入口點的前5字節進行替換,使用e9指令進行跳轉到Fake函數的地址,然後去執行掛鉤函數。 在程序的實現過程中注意的問題有兩個: 保存源函數實現的前5字節指令,爲了恢

原创 分頁和非分頁內存(Windows內核學習筆記)

虛擬內存劃分表(來自Windows內核設計思想): 今天來說一下最常見的分頁和非分頁內存: 我們都知道虛擬地址是不能訪問物理內存的,需要內存管理單元將其映射到某個物理頁面,轉換成物理地址,CPU才能進行訪問。 分頁內存:暫時不會

原创 常見的設計模式(續)--C++基礎

工廠方法模式(FACTORY METHOD): 意圖:定義一個用於創建對象的接口,讓子類決定實例化哪一個類。Factory Method使一個類的實例化延遲到子類。 動機:當我們用不同的工廠去生產不同的產品時候,我們不知道具體需要

原创 在Dll中創建線程?No,大錯特錯

轉自:https://blog.csdn.net/qq_42021840/article/details/105956819 前幾天的時候,遇到一個面試 ,問我在Dll中的忌諱有什麼?我回答的是不能在dll  main函數中創

原创 對IRP知識總結(壹)(Windows內核學習筆記)

用戶模式下對所有驅動程序的I/O請求都會,全部由操作系統轉化爲一個叫做IRP(I/O Request Package)的數據結構,不同的IRP數據結構會被派遣到不同的派遣函數中進行請求的處理。 在一個驅動程序中對應的DriverO

原创 stack以及使用舉例--C++基礎

序列式容器: stack是一種先進後出的數據結構(First In Last Out),它只有一個出口,我們編程中的棧區數據就是這樣的存放形式,stack允許新增元素、移除元素、取得最頂端元素。但是除了最頂端外,沒有任何辦法可以存

原创 內核對象(Windows內核學習筆記)

對象,是一個特殊的數據結構,用來定義受保護得實體,我們平時所說得對象實際上是對象體,例如進程對象,就是EPROCESS。所以內核對象不能直接被用戶層進行操作,那我們只能通過句柄。句柄是一個指向對象得指針。對象具有唯一性,但是句柄可