Time of Update: 2018-12-04
今天面試遇到這樣一個問題,要求寫2個類 一個只能在棧上執行個體化 另一個只能在堆上執行個體化。對此問題百思不得其解,面試結束,趕緊求解,深恐遺忘: 只能在堆上執行個體化解構函式設定為私人或受保護的成員,在定義棧對象後,函數結束時,不能調用非公有解構函式,這時也應該提供Destroy(){ delete this },避免造成記憶體泄露。class CHeapOnly{public: CHeapOnly(){} void Destroy() const {
Time of Update: 2018-12-04
GetTickCount返回(retrieve)從作業系統啟動到現在所經過(elapsed)的毫秒數,它的傳回值是DWORD。如: DWORD time; time = GetTickCount();但是GetTickcount函數:它返回從作業系統啟動到當前所經過的毫秒數,常常用來判斷某個方法執行的時間,其函數原型是DWORD GetTickCount(void),傳回值以32位的雙字類型DWORD儲存,因此可以儲存的最大值是2^32 ms約為49.
Time of Update: 2018-12-04
#define FIND( struc, e ) (size_t)&(((struc*)0)- >e){ int a; char b; double c; } FIND(student,a); //等於0 FIND(student,b; //等於4解析: 這裡將0轉換為struct指標,即臨時指向NULL,而後擷取struct中e的地址(這裡 編譯器根本不會訪問e中元素內容),最後進行一部強制轉換 轉化為位移量。總結:
Time of Update: 2018-12-04
一大早的來到圖書館還把我的本本抗來了,就為了寫一篇部落格。 這個部落格其實說來挺愧疚的,原理搞錯了,卻也實現了預期之外的功能,如題R3下的自身進程守護。
Time of Update: 2018-12-04
好久沒有寫博了,今天一下課就來寫一篇,還是申明一下,菜鳥言論僅供娛樂,大牛看了可以忽略。 最近突發奇想,想試試R3下的線程注入,線程注入有好多中方法,我選得是鉤子函數注入的方法,因為之前一直在做掛鈎嘛,所以做起來比較容易,注入之後幹嘛呢,我又糾結了很久,就把之前的APIHook的程式寫進去吧,也正好想拿Windows的工作管理員開刀一下,掛鈎TerminateProcess函數,成功了。我們直接切入正題。
Time of Update: 2018-12-04
這是最近的一段代碼。也沒有什麼好說的,簡單的socket編程,設定網卡為混雜模式,接受所有封包,並列印所有封包的基本資料,及內容。#include<stdio.h>#include<winsock2.h>#include<string.h>#include<windows.h>#include<mstcpip.h>#pragma comment(lib,"ws2_32.lib")#define RECVPORT 7000
Time of Update: 2018-12-04
在labview裡面調用labview產生的dll時,若是勾選上 “specify path on diagram“,也就是你想在框圖中指定調用dll的路徑。 若是運行你做好的vi,會發現,labview突然就沒有反應了,而且只能重啟labview。 原因是什麼呢,是因為我們的CLF節點的配置中,忽略了一個東西。 Run in UI thread—Specifies the Call Library Function Node execution must
Time of Update: 2018-12-04
很久沒有寫部落格了,今天寫寫一個以前沒有寫過的話題,緩衝區溢位shellcode編寫。我是菜鳥,以前沒有寫過shellcode,最近也在忙著網路的滲透,棧溢出也是零零碎碎的看到一些知識,大牛飄過,菜鳥言論僅供娛樂。大家同是菜鳥的人可以看看,我是站在初學者的角度寫這篇文章的,所以初學者應該比較容易理解。對於一些複雜的shellcodet我們暫且先不談,我們先來看看自己編寫一個開啟cmd視窗的shellcode。其實駭客防線上有位大神執筆寫了一系列exploit的編寫,有興趣的人自己去看看。首先我們
Time of Update: 2018-12-04
最近在論壇上看到一個文章,讀取輸入框中的內容,我也正在做這方面東西,於是就動手做了一下,原本以為很簡單的東西,實際著手去做的時候倒是遇到了不小的麻煩。 首先想要獲得一個未知的對話方塊的EDIT控制項的內容無非就是幾個步驟:1,獲得所要獲得內容的控制代碼2,獲得控制項控制代碼3,獲得控制項內容
Time of Update: 2018-12-04
如何捕捉一個未知視窗的按鈕按下的訊息?方法多種多樣,這裡我就介紹一種比較常見的方法——鉤子。 原理上很簡單也很容易理解,安裝一個系統的全域鉤子,過濾所有的系統訊息,當然了,可以過濾制定的系統訊息,比如按鈕常用的發給視窗的WM_COMMAND訊息,然後判斷這個訊息的一些屬性,比如發給誰,誰發出的等,來判斷這個訊息是不是我們要找的訊息。 首先第一步,我們要知道我們要監視的按鈕發出了什麼樣的訊息,這個任然可以用spy++查看,如:
Time of Update: 2018-12-04
背景:在我們的電腦中映像是以RGB888格式顯示映像的,24位元影像每個像素儲存了32bit的資料,即RGB888+Alpha,Alpha就是半透明填充位元組……但是對於真彩的映像而言,肉眼在16bit的時候已經難以分辨了,因此,有些時候,可以講RGB888轉換為RGB565來儲存,減少了儲存空間的容量的同時,降低了資料量;在後端顯示的時候,再次把RGB565轉換為RGB888,實現資料寬度的匹配!! 一.RGB888->RGB565方法只要提取相應單色高位即可(R5 G6
Time of Update: 2018-12-04
好久沒寫部落格了,最近想抽點時間補上之前的東西,有些東西要記錄下來,以後看了會覺得很有意思。這個小工具沒有什麼可以說的,直接vc編譯串連就可以用了。下面附上代碼:#include "stdio.h"#include <Windows.h>int main(){ printf("請輸入要獲得索引號的函數的名稱:\n"); CHAR apiName[256]; scanf("%s",apiName); //獲得函數地址 FARPROC pAddress1 =
Time of Update: 2018-12-04
好久沒寫部落格了,呵呵。今天再來寫一篇。再次申明:菜鳥言論僅供娛樂。最近一直在準備一個比賽,所以進度就慢了下來。突然於幾天前突發奇想想自己做一個魔獸的改建,而且自己覺得也挺簡單的,有現成的鉤子模版,隨便寫寫就行了,哪知道遇到了困難。正應了那就話啊:當你輕視它的時候,他就會輕視你。
Time of Update: 2018-12-04
關心我的同志們可能又要說了,哈哈,這個菜鳥又要發話了,嘿嘿,我菜鳥我榮幸。最近的編程走向白熱化,因為剛開學,所以時間比較多,所以經常泡圖書館。下決心這學期一定搞定核心級編程,大話放出去了,實現與否還得看造化了。剛剛邁入驅動程式設計的老高的門檻,發現原來困難重重,核心程式設計不同於一般的使用者層的介面程式設計,有大量的協助資料,網上的,MSDN,論壇裡的,各種各樣,連綿不絕。到了核心態,協助資料也少了,論壇的回複也少了,錯誤也比以前更難調試了,所以一下子不知道咋辦,手足無措,一連一個星期下來,除了
Time of Update: 2018-12-04
INF檔案格式要求一個INF檔案是以段組織的簡單的文字檔。一些段油系統定義(System-Defined)的名稱,而另一些段由INF檔案的編寫者命名。每個段包含特定的條目和命名,這些命名用於引用INF檔案其它地方定義的附加段。INF檔案的文法規則:1、要求的內容:在特定的INF檔案中所要求的必選段和可選段、條目及命令依賴於所要安裝的裝置群組件。端點順序可以是任意的,大多數的INF檔案安裝慣用的次序來安排各個段。2、段名:INF檔案的每個段從一個括在方括弧[]中的段名開始。段名可以由系統定義或IN
Time of Update: 2018-12-04
最近我在寫一個程式的時候,需要用到ExitWindowsEx函數,使電腦重啟,但是無論怎麼使都是在vc6中可以運行,但是一旦產生了exe檔案,就沒有這種效果,於是乎上網找,上論壇上找,都沒有結果。
Time of Update: 2018-12-04
呵呵,最近部落格寫的有點頻繁,我這個人耐不住性子,有點東西就要拿出來讓大家分享一下,雖然不一定都是好的。最近一直在做HOOK,從核心驅動到使用者層的API函數,基本上都嘗試過了,昨天下午搞了一下午,寫了一個R3下設定全域鉤子截獲鍵盤記錄的小程式,雖然網上可能多得是,但是我認為菜鳥貴在自己動手做,哪怕是從網上從書上借鑒來的,你都要自己理解以後上機動手做一遍,這樣你會發現很多你以前從未發現過的東西。
Time of Update: 2018-12-04
呵呵,這也是我無意中弄出來的一個小東西,大牛就飄過吧。這個程式就短短几行代碼,但是值得注意的是裡面一個64位元的輸出轉換問題,說實話我也不是太瞭解,因為編程很少用到這麼一個大的數,先上代碼:#include "windows.h"#include "Winbase.h"#include "stdio.h"int main(){ULARGE_INTEGER nTotalBytes;ULARGE_INTEGER nFreeBytes;ULARGE_INTEGER
Time of Update: 2018-12-04
造成LNK2005錯誤主要有以下幾種情況: 11.重複定義全域變數。可能存在兩種情況: A、對於一些初學編程的程式員,有時候會以為需要使用全域變數的地方就可以使用定義申明一下。其實這是錯誤的,全域變數是針對整個工程的。正確的應該是在一個CPP檔案中定義如下:int g_Test;那麼在使用的CPP檔案中就應該使用:extern int g_Test即可,如果還是使用int g_Test,那麼就會產生LNK2005錯誤,一般錯誤錯誤資訊類似:AAA.obj error LNK2005 int
Time of Update: 2018-12-04
今天下午,我在寫東西,無意間在電腦裡發現了360 4.1的版本,突發奇想想看看過去的360的程式,運行起來後是那個熟悉的介面,很懷舊的感覺,就像測試一下正在編寫的東西,一個API結束進程的小程式,結果360tray.exe進程簡單的就被TerminateProcess結束了,哈哈,算是一個360程式的一個漏洞把。