Time of Update: 2018-12-04
RegOpenKeyEx在64位系統上安裝32位的應用程式,應用程式寫的註冊表在64位中路徑樣本如下:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Tencent\QQ2009這個時候如果我們自己編寫32位應用程式去讀的時候就不是下面的路徑了:HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ2009一定要加上Wow6432Node,如果是64位應用程式的話直接用路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Tencen
Time of Update: 2018-12-04
現代電腦上的作業系統基本上都是多任務的作業系統,每個任務輪流佔用系統一個小時間片,系統速度如此之快,以至於每個任務都覺得自己佔有整台電腦。同時現代電腦上運行著很多時間敏感的程式,比如定期備份系統,每日淩晨進行系統維護等等。要實現這些功能,離不開定時和計時的需求,而這些需求的高效實現離不開硬體的支援,我們來解讀下,pc機給軟體提供了怎樣的平台。RTC最早的IBM-PC上有RTC系統時鐘晶片,並且有電池供電,有了它,電腦就有了手錶的功能,RTC是一個獨立的系統,即使PC關機或者斷電,仍可正常工作,這
Time of Update: 2018-12-04
系統匯流排的詳細發展曆程,包括早期的PC匯流排和ISA匯流排、PCI/AGP匯流排、PCI-X匯流排以及主流的PCIExpress、HyperTransport高速串列匯流排。從PC匯流排到ISA、PCI匯流排,再由PCI進入PCIExpress和HyperTransport體系,電腦在這三次大轉折中也完成三次飛躍式的提升。與這個過程相對應,電腦的處理速度、實現的功能和軟體平台都在進行同樣的進化,顯然,沒有匯流排技術的進步作為基礎,電腦的快速發展就無從談起。業界站在一個嶄新的起點:PCIExpr
Time of Update: 2018-12-04
現在很多的EXE檔案都是內建驅動,在程式運行時直接將驅動檔案釋放出來並載入運行,下面給出一個釋放驅動資源的樣本函數,今天看到了這樣的代碼記錄下來方便日後拿來使用。使用時只需要修改紅色字型部分,改成自己的即可,這裡說的是EXE、DLL等檔案都可以採用這樣的方式來釋放。//釋放資源BOOL Release(){//尋找資源檔HRSRC res = FindResource(NULL,MAKEINTRESOURCE(IDR_SYS),TEXT("BINARY"));
Time of Update: 2018-12-04
利用函數調用棧平衡原理實現溢出調用(有點類似於棧溢出,只不過這裡是直接修改,也可以命使用溢出方式實現)============================================================================================#include <stdio.h>#include <string.h>unsigned int oldEbpAddress = 0;unsigned int oldRetAddress
Time of Update: 2018-12-04
硬碟的每個碟片都有兩個盤面(Side),即上、下盤盤面,安照順序從上至下從“0”開始依次編號。磁碟在格式化時被劃分成許多同心圓,這些同心圓軌跡叫磁軌(Track)。磁軌從外向內從0開始順序編號。所有盤面上的同一磁軌構成的一個圓柱,通常稱做柱面(Cylinder),每個柱面上的磁頭由上而下從“0”開始編號。 作業系統以扇區(Sector)形式將資訊儲存在硬碟上,每個扇區包括512個位元組的資料和一些其他資訊。 這些通常用來表示硬碟的物理地址,現在隨著硬碟容量增大我們用邏輯地址即線性地址(LBA)。
Time of Update: 2018-12-04
1.托盤菜單關閉不了-點擊空白處托盤菜單無法關閉解決方案:在 PopupMenu 語句前加上 SetForegroundWindow Me.hwnd例如:if (LOWORD(lParam) == WM_RBUTTONUP){HMENU hMenu = LoadMenu(This->Instance, MAKEINTRESOURCE(This->NotifyIconData.uID));if (hMenu != NULL){HMENU hSubMenu =
Time of Update: 2018-12-04
#include <cstdio>#include <cstring>#include <cstdlib>#include <vector>#include <cmath>#include <iostream>#include <algorithm>#include <functional>#include <string>#include <map>#include <
Time of Update: 2018-12-04
TARGETNAME=consoleTARGETTYPE=PROGRAMSOURCES=console.cpp \USE_MSVCRT = 1UMTYPE=consoleUMLIBS=$(SDK_LIB_PATH)\gdi32.lib \ $(SDK_LIB_PATH)\user32.lib \ $(SDK_LIB_PATH)\kernel32.lib \ $(SDK_LIB_PATH)\Ntdll.lib\上面是sources檔案的內容!INCLUDE $(
Time of Update: 2018-12-04
[-]以前安裝VS6從來沒有遇到任何問題最近安裝時總是有acmbootexe發送錯誤的錯誤估計是我的XP系統版本引發的一些相容性問題Google一下找出瞭解決方法 在 安裝目錄SETUP 下複製一份VS98ENTSTF並命名為ACMSETUPSTF把 安裝目錄SETUP 下的所有檔案複製到安裝目錄下 運行ACMSETUPEXE開始安裝 以前安裝VS6從來沒有遇到任何問題,最近安裝時總是有"acmboot.exe發送錯誤"的錯誤,估計是我的XP系統版本引發的一些相容性問題。
Time of Update: 2018-12-04
WM_PAINT是Windows視窗系統中一條重要的訊息,應用程式通過處理該訊息實現在視窗上的繪製工作。1. 系統何時發送WM_PAINT訊息?
Time of Update: 2018-12-04
TARGETNAME=DlgTARGETTYPE=PROGRAMSOURCES=Dlg.cpp \ Dlg.rcUMENTRY=winmainUSE_MSVCRT = 1UMTYPE=windowsUMLIBS=$(SDK_LIB_PATH)\gdi32.lib \ $(SDK_LIB_PATH)\user32.lib \ $(SDK_LIB_PATH)\kernel32.lib \
Time of Update: 2018-12-04
功能:示範等待通過CreateProcess建立的進程結束#include <stdio.h>#include <Windows.h>int main(){STARTUPINFO si;PROCESS_INFORMATION pi;memset( &si, 0x00, sizeof(si) );si.cb = sizeof(si);memset( &pi, 0x00, sizeof(pi) );// Start the child process. if
Time of Update: 2018-12-04
LBA(Logical Block Addressing)邏輯區塊定址。在 LBA 模式下,我們知道硬碟上的一個資料區域由它所在的磁頭、柱面(也就是磁軌)和扇區所唯一確定。早期系統就是直接使用磁頭、柱面和扇區來對硬碟進行定址(這稱為CHS定址),這需要分別儲存每個地區的三個參數(這稱為3D參數),使用時再分別讀取三個參數,然後再送到磁碟控制卡去執行。由於系統用8b來儲存磁頭地址,用10b來儲存柱面地址,用6b來儲存扇區地址,而一個扇區共有512B,這樣使用CHS定址一塊硬碟最大容量為256 *
Time of Update: 2018-12-04
TARGETNAME=dllTARGETTYPE=DYNLINKSOURCES=dll.cpp \USE_MSVCRT = 1TARGETLIBS=$(SDK_LIB_PATH)\gdi32.lib \ $(SDK_LIB_PATH)\user32.lib \ $(SDK_LIB_PATH)\kernel32.lib \ $(SDK_LIB_PATH)\Ntdll.lib\sources檔案內容,注意類型為DYNLINK!INCLUDE
Time of Update: 2018-12-04
//功能:枚舉系統當前進程資訊並將枚舉到的進程名與進程ID列印出來#include <Windows.h>#include <Tlhelp32.h>int main(){PROCESSENTRY32 pe;HANDLE snap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );pe.dwSize = sizeof(pe);Process32First( snap, &pe );printf("--------
Time of Update: 2018-12-04
轉自:http://apps.hi.baidu.com/share/detail/16127627STL queue 的使用#include <iostream>#include <queue>#include <assert.h>/*調用的時候要有標頭檔: #include<stdlib.h> 或 #include<cstdlib> +#include<queue>
Time of Update: 2018-12-04
TARGETNAME=libTARGETTYPE=LIBRARYSOURCES=lib.c \sources檔案內容!INCLUDE $(NTMAKEENV)\makefile.defmakefile檔案內容lib.c或lib.cpp源檔案內容,不同的尾碼產生的lib庫引用時原型不同int Add(int a, int b){return a+b;}int Sub(int a, int b){return
Time of Update: 2018-12-04
總體概述:關於呼叫慣例中,主要涉及的內容就是不同的呼叫慣例對於函數調用棧平衡是由調用者維護棧平衡還是被調用者自己維護棧平衡、傳入參數的方向從右至左還是從左至右通過棧傳參還是通過寄存器傳參、還有一個就是關於不同呼叫慣例方式對於函數名的修飾方式。總體上瞭解這些就差不多了。----------------------------------------------------------------------調用者自己恢複棧平衡,用於可變參函數,呼叫慣例為__cdecl,彙編代碼錶現push
Time of Update: 2018-12-04
--------------------------Naked Function Calls關鍵字在MSDN中--------------------------------------------Microsoft SpecificFunctions declared with the naked attribute are emitted without prolog or epilog code, enabling you to write your own custom