[原創]CVE-2009-3459漏洞POC分析<已更新POC>
仙果發表於2009-12-05
Author: 仙果
附記:一個月以前分析的,文章中大概以我翻譯的那篇文章為思路,進行分析,補充了文章裡的一些細節,好不容易找到的,POC樣本已經找不到了。
比較可惜。翻譯文章的連結地址為:對PDF _CVE-2009-3459分析文章的翻譯
[ 目錄 ]
0×00 漏洞公告
0×01 漏洞除錯分析
0×01_0 觸發漏洞
0×01_1 控制程式執行流程
0×02 Adobe Readr堆管理系統
0×03 總結
0×00 漏洞公告
Heap-based buffer overflow in Adobe Reader and Acrobat 7.x
before 7.1.4, 8.x before 8.1.7, and 9.x before 9.2 allows remote
attackers to execute arbitrary code via a crafted PDF file that
triggers memory corruption, as exploited in the wild in October 2009.
NOTE: some of these details are obtained from third party information.
0×01 漏洞除錯分析
0×01_0 觸發漏洞
在PDF中,由於引數值觸發的初始化整數溢位
Colors 的值被設定為 1073741838,其十六進位制為0x4000000e,沒有弄明白flate
編碼是什麼編碼?查閱相關資料說是"影像解碼器",莫衷一是.
在009f60a5h處地址,Adobe Reader會引用0x4000000e引數進行計算,如下:
............................................................................
009f60a5 地址的意思為 ecx*4+48 賦給 edx
ecx=0x4000000e,由於存在進位,最後的值就為0x80
即,0x4000000e*4+48=0x100000080,但持續只讀取到了0x80
在接下來的 call AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x627c1 (009f6220) 中的一個函式中呼叫API函式MemSet進行堆的分配
Adobe Reader似乎認為 Colors的每一個值都為一個物件,每一個物件都包含有4個位元組即一個DWORD,語句的目的是計算為每個物件分配一個DWORD需要的記憶體大小。
其返回值為eax=0213208c,即0x80大小的緩衝區指標,指向緩衝區的起始位置。
注意這個值,在下面程式進行計算的時候會使用到這個地址。
..............................................................................
............................................................................................................
經過幾次跳轉以後,程式會在009f5e1f處,把0x80大小的緩衝區指標(eax=0213208c)儲存在[esi+0ach]中,並在下面的處理過程中進行呼叫
............................................................................................................
............................................................................................................
0x80大小的緩衝區指標(0213208c)賦值給eax,並壓入堆疊
借用參考資料中相關內容:
1.lpBuff:0x80大小的緩衝區堆塊的指標-------------------eax
2.bits_original_stream:解碼流中的位元(bits)數量-----esi
3.v_counter:從0到bits_original_stream-1的計數器值-----ecx
以下為 函式009f7ed0的彙編程式碼:
............................................................................................................
............................................................................................................
009f7ed8處[eax]=00 00 20 00 00 00 10
009f7f36處指令是對bits_original_stream進行計算 bits_original_stream=0x38,也即是說 編碼00 00 20 00 00 00 10經過解碼
後的值為0x38
009f7fd7 8d5c9644 lea ebx,[esi+edx*4+44h]
此處指令的為 指標+v_counter*4+44h,得到的值為0x80大小緩衝區指標+0x44處的指標。
記住0x44這個值,在下面除錯過程中需要用到。
虛擬碼如下:
call AcroRd32_950000!PDFLTerm+0x23e140 (01027850) 即為mystery_func(神秘函式)
0x80大小的緩衝區假定Colors 引數的每個物件包含一個DWORD(即有0x4000000e個物件,但實際上只分配了0x80大小的緩衝區,很明視訊記憶體在溢位),
因此這裡為整個溢位利用的核心。
因為是整數溢位,分配的緩衝區實際上遠遠小於所需要的大小:0x4000000e*4+44h遠大於0x80,當計數器在列舉物件時,就超出了緩衝區的結尾,觸發溢位。
從虛擬碼可以看出,只有v_counter>=Colors 0x4000000e時,迴圈才會退出,但由於Colors的極大值,迴圈不會退出,這導致在
call AcroRd32_950000!PDFLTerm+0x23e140 (01027850)
中對每一個物件呼叫了原來的位元流進行處理。
整段記憶體從0x44的偏移開始被bits_original_stream*4覆蓋。這裡的偏移0x44指的的相對於0x80大小緩衝區的指標的偏移,為什麼?
請看這裡:
009f7fd7 lea ebx,[esi+edx*4+44h] //lpBuff+v_counter*4+44h,賦值給ebx.
0x38*4=0xe0
被分配的堆塊長度只有0x80,call AcroRd32_950000!PDFLTerm+0x23e140 (01027850) 函式實際覆蓋的大小為0xa4=0x44+0xc-
附記:一個月以前分析的,文章中大概以我翻譯的那篇文章為思路,進行分析,補充了文章裡的一些細節,好不容易找到的,POC樣本已經找不到了。
比較可惜。翻譯文章的連結地址為:對PDF _CVE-2009-3459分析文章的翻譯
[ 目錄 ]
0×00 漏洞公告
0×01 漏洞除錯分析
0×01_0 觸發漏洞
0×01_1 控制程式執行流程
0×02 Adobe Readr堆管理系統
0×03 總結
0×00 漏洞公告
Heap-based buffer overflow in Adobe Reader and Acrobat 7.x
before 7.1.4, 8.x before 8.1.7, and 9.x before 9.2 allows remote
attackers to execute arbitrary code via a crafted PDF file that
triggers memory corruption, as exploited in the wild in October 2009.
NOTE: some of these details are obtained from third party information.
0×01 漏洞除錯分析
0×01_0 觸發漏洞
在PDF中,由於引數值觸發的初始化整數溢位
25 0 obj<</Length 299/Filter/FlateDecode/DecodeParms<< /Columns 1 /Predictor 2 /BitsPerComponent 1 /Colors 1073741838 //此處就是為關鍵引數,觸發漏洞的關鍵點. >>>>stream
Colors 的值被設定為 1073741838,其十六進位制為0x4000000e,沒有弄明白flate
編碼是什麼編碼?查閱相關資料說是"影像解碼器",莫衷一是.
在009f60a5h處地址,Adobe Reader會引用0x4000000e引數進行計算,如下:
009f60a5 8d148d48000000 lea edx,<Unloaded_util.dll>+0x47 (00000048)[ecx*4] //ecx=0x4000000e 009f60ac 89442424 mov dword ptr [esp+24h],eax //eax=0x0 009f60b0 8954241c mov dword ptr [esp+1Ch],edx //0x80儲存到[esp+1ch]中 009f60b4 8b4c2410 mov ecx,dword ptr [esp+10h] //ecx賦值為0x0 009f60b8 8b442414 mov eax,dword ptr [esp+14h] //eax賦值為0x0 009f60bc 83c003 add eax,3 //eax=eax+0x3=0x3 009f60bf 83e0fc and eax,0FFFFFFFCh //相與,為0x0 009f60c2 8d6c0703 lea ebp,[edi+eax+3] //ebp=0x08000005 009f60c6 83e5fc and ebp,0FFFFFFFCh //ebp=0x08000004 009f60c9 8bd5 mov edx,ebp 009f60cb 0faf542470 imul edx,dword ptr [esp+70h] 009f60d0 03542418 add edx,dword ptr [esp+18h] //edx=0x0 009f60d4 89442414 mov dword ptr [esp+14h],eax 009f60d8 8d048a lea eax,[edx+ecx*4] //eax=0x0 009f60db 0344241c add eax,dword ptr [esp+1Ch] //eax=0x80 009f60df 8b4c2428 mov ecx,dword ptr [esp+28h] //ecx=0x03ddcf88 009f60e3 50 push eax 009f60e4 51 push ecx 009f60e5 e836010000 call AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x627c1 (009f6220) 009f60ea 8bd8 mov ebx,eax //eax=0213208c ,0x80大小的緩衝區指標 009f60ec 83c408 add esp,8 009f60ef 85db test ebx,ebx
............................................................................
009f60a5 地址的意思為 ecx*4+48 賦給 edx
ecx=0x4000000e,由於存在進位,最後的值就為0x80
即,0x4000000e*4+48=0x100000080,但持續只讀取到了0x80
在接下來的 call AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x627c1 (009f6220) 中的一個函式中呼叫API函式MemSet進行堆的分配
Adobe Reader似乎認為 Colors的每一個值都為一個物件,每一個物件都包含有4個位元組即一個DWORD,語句的目的是計算為每個物件分配一個DWORD需要的記憶體大小。
其返回值為eax=0213208c,即0x80大小的緩衝區指標,指向緩衝區的起始位置。
注意這個值,在下面程式進行計算的時候會使用到這個地址。
..............................................................................
009f5e18 33db xor ebx,ebx 009f5e1a 83c40c add esp,0Ch 009f5e1d 3bc3 cmp eax,ebx 009f5e1f 8986ac000000 mov dword ptr <Unloaded_util.dll>+0xab (000000ac)[esi],eax ds:0023:03ddd034=00000000
............................................................................................................
經過幾次跳轉以後,程式會在009f5e1f處,把0x80大小的緩衝區指標(eax=0213208c)儲存在[esi+0ach]中,並在下面的處理過程中進行呼叫
............................................................................................................
009f7854 83c404 add esp,4 009f7857 8b86ac000000 mov eax,dword ptr <Unloaded_util.dll>+0xab (000000ac)[esi] ds:0023:03ddd034=0213208c //[esi+0ach]=0213208c 賦值給eax 009f785d 50 push eax //eax壓入堆疊 009f785e 8d4c2410 lea ecx,[esp+10h] 009f7862 56 push esi //esi=03ddcf88,[esi]=0x7 009f7863 51 push ecx 009f7864 896c2418 mov dword ptr [esp+18h],ebp 009f7868 e863060000 call AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x64471 (009f7ed0) //發生溢位的函式 009f786d 83c40c add esp,0Ch 009f7870 85c0 test eax,eax 009f7872 7407 je AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x63e1c (009f787b)
............................................................................................................
0x80大小的緩衝區指標(0213208c)賦值給eax,並壓入堆疊
借用參考資料中相關內容:
1.lpBuff:0x80大小的緩衝區堆塊的指標-------------------eax
2.bits_original_stream:解碼流中的位元(bits)數量-----esi
3.v_counter:從0到bits_original_stream-1的計數器值-----ecx
以下為 函式009f7ed0的彙編程式碼:
............................................................................................................
009f7ed0 83ec2c sub esp,2Ch 009f7ed3 8b442430 mov eax,dword ptr [esp+30h] 009f7ed7 53 push ebx 009f7ed8 8b18 mov ebx,dword ptr [eax] 009f7eda 8b442438 mov eax,dword ptr [esp+38h] 009f7ede 55 push ebp 009f7edf 56 push esi 009f7ee0 8b742444 mov esi,dword ptr [esp+44h] 009f7ee4 0fb70e movzx ecx,word ptr [esi] 009f7ee7 57 push edi 009f7ee8 8b38 mov edi,dword ptr [eax] 009f7eea 8b4604 mov eax,dword ptr [esi+4] 009f7eed 33d2 xor edx,edx 009f7eef 85c0 test eax,eax 009f7ef1 8954242c mov dword ptr [esp+2Ch],edx 009f7ef5 894c241c mov dword ptr [esp+1Ch],ecx 009f7ef9 895c2414 mov dword ptr [esp+14h],ebx 009f7efd 897c2424 mov dword ptr [esp+24h],edi 009f7f01 0f8c03020000 jl AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x646ab (009f810a) //[不跳轉] 009f7f07 83f801 cmp eax,1 009f7f0a 7e3e jle AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x644eb (009f7f4a) //[不跳轉] 009f7f0c 83f802 cmp eax,2 009f7f0f 0f85f5010000 jne AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x646ab (009f810a) //[不跳轉] 009f7f15 8b4608 mov eax,dword ptr [esi+8] 009f7f18 0faf460c imul eax,dword ptr [esi+0Ch] 009f7f1c 89442418 mov dword ptr [esp+18h],eax 009f7f20 8b4610 mov eax,dword ptr [esi+10h] 009f7f23 83f803 cmp eax,3 009f7f26 7e07 jle AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x644d0 (009f7f2f) //[跳轉] ......... 009f7f2f b903000000 mov ecx,offset <Unloaded_util.dll>+0x2 (00000003) //ecx=0x3 009f7f34 2bc8 sub ecx,eax //eax=0x0,ecx=0x3 009f7f36 d3e7 shl edi,cl //edi=7,邏輯左移3次,即edi=0x7*2*2*2=0x38 009f7f38 897c2428 mov dword ptr [esp+28h],edi //edi賦值給[esp+28] 009f7f3c 8b442428 mov eax,dword ptr [esp+28h] 009f7f40 33ff xor edi,edi 009f7f42 85c0 test eax,eax 009f7f44 897c2448 mov dword ptr [esp+48h],edi 009f7f48 7f0e jg AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x644f9 (009f7f58) //[跳轉] ......... 009f7f58 8b5620 mov edx,dword ptr [esi+20h] ds:0023:021320ac=00000000 009f7f5b 2bc7 sub eax,edi 009f7f5d 8d0c10 lea ecx,[eax+edx] 009f7f60 89442440 mov dword ptr [esp+40h],eax 009f7f64 33c0 xor eax,eax 009f7f66 394c2418 cmp dword ptr [esp+18h],ecx //0x4000000e與0x38進行比較 009f7f6a 0f9ec0 setle al 009f7f6d 0fb7c8 movzx ecx,ax 009f7f70 6685c9 test cx,cx 009f7f73 8b442440 mov eax,dword ptr [esp+40h] 009f7f77 894c2438 mov dword ptr [esp+38h],ecx 009f7f7b 740c je AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x6452a (009f7f89) //[跳轉] .......... 009f7f89 89442444 mov dword ptr [esp+44h],eax ss:0023:0012ed40=03ddcf88 009f7f8d 8bc8 mov ecx,eax 009f7f8f 33c0 xor eax,eax 009f7f91 39460c cmp dword ptr [esi+0Ch],eax //0x4000000e與0x38進行比較 009f7f94 89442440 mov dword ptr [esp+40h],eax 009f7f98 0f8e05010000 jle AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x64644 (009f80a3) //[不跳轉] 009f7f9e 8d2c1f lea ebp,[edi+ebx] 009f7fa1 8d1c7b lea ebx,[ebx+edi*2] 009f7fa4 2bd7 sub edx,edi 009f7fa6 896c2420 mov dword ptr [esp+20h],ebp 009f7faa 895c2424 mov dword ptr [esp+24h],ebx 009f7fae 89542430 mov dword ptr [esp+30h],edx 009f7fb2 eb08 jmp AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x6455d (009f7fbc) //[跳轉] 009f7fb4 8b542430 mov edx,dword ptr [esp+30h] //迴圈開始 009f7fb8 8b442440 mov eax,dword ptr [esp+40h] 009f7fbc 3bc1 cmp eax,ecx //如果v_counter>bits_original_stream則 009f7fbe 0f8ddf000000 jge AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x64644 (009f80a3) //迴圈暫停 009f7fc4 8b6e0c mov ebp,dword ptr [esi+0Ch] //0x4000000e賦值給ebp 009f7fc7 03c7 add eax,edi 009f7fc9 03c2 add eax,edx 009f7fcb 99 cdq 009f7fcc f7fd idiv eax,ebp 009f7fce 8d0439 lea eax,[ecx+edi] //edx變成v_counter 009f7fd1 8b4e10 mov ecx,dword ptr [esi+10h] 009f7fd4 83f903 cmp ecx,3 009f7fd7 8d5c9644 lea ebx,[esi+edx*4+44h] //0x80大小緩衝區指標+v_counter*4+44h,賦值給ebx. 009f7fdb 7558 jne AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x645d6 (009f8035) //[跳轉] .......... 009f8035 83f904 cmp ecx,4 009f8038 7522 jne AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x645fd (009f805c) 009f803a 8b4c241c mov ecx,dword ptr [esp+1Ch] 009f803e 8b542414 mov edx,dword ptr [esp+14h] 009f8042 8d3c42 lea edi,[edx+eax*2] 009f8045 8b03 mov eax,dword ptr [ebx] 009f8047 51 push ecx 009f8048 8b4c2428 mov ecx,dword ptr [esp+28h] 009f804c 8bd5 mov edx,ebp 009f804e e88df76200 call AcroRd32_950000!PDFLTerm+0x23e0d0 (010277e0) 009f8053 8b7c244c mov edi,dword ptr [esp+4Ch] 009f8057 83c404 add esp,4 009f805a eb23 jmp AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x64620 (009f807f) 009f805c 8b13 mov edx,dword ptr [ebx] 009f805e 52 push edx 009f805f 8b542420 mov edx,dword ptr [esp+20h] 009f8063 d3e0 shl eax,cl 009f8065 52 push edx 009f8066 8b54241c mov edx,dword ptr [esp+1Ch] ................ 009f8035 83f904 cmp ecx,4 009f8038 7522 jne AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x645fd (009f805c) [br=1] //[跳轉] ................ 009f805c 8b13 mov edx,dword ptr [ebx] ds:0023:021320d0=00000000 009f805e 52 push edx 009f805f 8b542420 mov edx,dword ptr [esp+20h] 009f8063 d3e0 shl eax,cl 009f8065 52 push edx 009f8066 8b54241c mov edx,dword ptr [esp+1Ch] 009f806a d3e5 shl ebp,cl 009f806c 55 push ebp 009f806d 50 push eax 009f806e 8b442450 mov eax,dword ptr [esp+50h] 009f8072 03c7 add eax,edi 009f8074 d3e0 shl eax,cl 009f8076 52 push edx 009f8077 e8d4f76200 call AcroRd32_950000!PDFLTerm+0x23e140 (01027850) //關鍵函式 009f807c 83c414 add esp,14h 009f807f 8903 mov dword ptr [ebx],eax //函式返回值覆蓋了一個DWORD 009f8081 8b442440 mov eax,dword ptr [esp+40h] 009f8085 8344242402 add dword ptr [esp+24h],2 009f808a 8344242001 add dword ptr [esp+20h],1 009f808f 8b4c2444 mov ecx,dword ptr [esp+44h] 009f8093 83c001 add eax,1 009f8096 3b460c cmp eax,dword ptr [esi+0Ch] 009f8099 89442440 mov dword ptr [esp+40h],eax 009f809d 0f8c11ffffff jl AcroRd32_950000!AVAcroALM_IsFeatureEnabled+0x64555 (009f7fb4) //跳轉回009f7fb4繼續執行。
............................................................................................................
009f7ed8處[eax]=00 00 20 00 00 00 10
009f7f36處指令是對bits_original_stream進行計算 bits_original_stream=0x38,也即是說 編碼00 00 20 00 00 00 10經過解碼
後的值為0x38
009f7fd7 8d5c9644 lea ebx,[esi+edx*4+44h]
此處指令的為 指標+v_counter*4+44h,得到的值為0x80大小緩衝區指標+0x44處的指標。
記住0x44這個值,在下面除錯過程中需要用到。
虛擬碼如下:
for(;;) { if( v_counter > bits_original_stream ) break; //對應:009f7f91 tmp_counter = v_counter % ParamX; //對應:009f7fcc lpCurrent = lpBuff + tmp_counter * 4 + 0x44; //對應:009f7fd7 iRetVal = mystery_func( *lpCurrent, variables...); //對應:009f804e *lpCurrent = iRetVal; //對應:009f807f v_counter++; //對應:009f8093 if( v_counter >= ParamX ) break; }
call AcroRd32_950000!PDFLTerm+0x23e140 (01027850) 即為mystery_func(神秘函式)
0x80大小的緩衝區假定Colors 引數的每個物件包含一個DWORD(即有0x4000000e個物件,但實際上只分配了0x80大小的緩衝區,很明視訊記憶體在溢位),
因此這裡為整個溢位利用的核心。
因為是整數溢位,分配的緩衝區實際上遠遠小於所需要的大小:0x4000000e*4+44h遠大於0x80,當計數器在列舉物件時,就超出了緩衝區的結尾,觸發溢位。
從虛擬碼可以看出,只有v_counter>=Colors 0x4000000e時,迴圈才會退出,但由於Colors的極大值,迴圈不會退出,這導致在
call AcroRd32_950000!PDFLTerm+0x23e140 (01027850)
中對每一個物件呼叫了原來的位元流進行處理。
整段記憶體從0x44的偏移開始被bits_original_stream*4覆蓋。這裡的偏移0x44指的的相對於0x80大小緩衝區的指標的偏移,為什麼?
請看這裡:
009f7fd7 lea ebx,[esi+edx*4+44h] //lpBuff+v_counter*4+44h,賦值給ebx.
0x38*4=0xe0
被分配的堆塊長度只有0x80,call AcroRd32_950000!PDFLTerm+0x23e140 (01027850) 函式實際覆蓋的大小為0xa4=0x44+0xc-
相關文章
- POC OEM介面2017-07-11
- phpStudy poc漏洞復現以及漏洞修復辦法2019-09-27PHP
- 【漏洞利用】2024Hvv漏洞POC283 個合集分享2024-09-02
- MS15-035 EMF檔案處理漏洞分析與POC構造2020-08-19
- SpEL表示式注入漏洞學習和回顯poc研究2021-08-30
- 2024Hvv漏洞彙總(128個POC)2024-09-03
- phpstudy後門POC分析和EXP開發2022-01-24PHP
- wordpress第三方外掛存在高危漏洞poc2023-02-01
- 行業分析| 快對講Poc方案的優勢2022-03-30行業
- 蘋果CMS漏洞 V10版本存在原始碼後門webshell POC2020-01-07蘋果原始碼Webshell
- [CVE-2024-4577] php CGI RCE漏洞python POC2024-06-09PHPPython
- 開源 POC 框架學習 (kunpeng)2020-07-02框架
- MS15-002 telnet服務緩衝區溢位漏洞分析與POC構造2020-08-19
- 甲骨文:WebLogic危急漏洞被積極野外利用攻擊(附POC)2020-05-02Web
- 一款線上的POc,CVE,EXP漏洞利用線上搜尋引擎很強大!2024-03-21
- Android Adobe Reader 任意程式碼執行分析(附POC)2020-08-19Android
- BlueBorne遠端程式碼執行漏洞Poc實戰(CVE-2017-0781)2017-12-12
- 記一次php反序列化漏洞中的POPchain和POC構造實戰2024-04-09PHPAI
- [poc] hw情報-泛微 e-cology v10 遠端程式碼執行漏洞2024-08-23
- 2.6倍!WhaleTunnel 客戶POC實景對弈DataX2024-06-05
- [武器化學習] 鯨髮卡系統虛擬卡系統任意檔案讀取漏洞poc2024-07-13
- 小技巧大作用,POC讓業務流程與RPA高效融合2019-10-08
- [POI2008] POC-Trains 題解2024-07-30AI
- PostgreSQL技術大講堂 - 第45講:poc-tpcc測試2024-03-15SQL
- PostgreSQL技術大講堂 - 第46講:poc-tpch測試2024-03-15SQL
- 初次參與Golden -Gate POC,希望有機會做Golden -Gate for ERP2010-08-02Go
- [原創]解讀天書----漏洞利用中級技巧的分析2014-02-19
- CVE-2022-30190 Follina Office RCE分析【附自定義word釣魚模板POC】2022-06-18
- 【原創】MySQL 返回更新值(RETURNING)2021-09-09MySql
- 【課程學習】課程2:十行程式碼高效完成深度學習POC2020-04-18行程深度學習
- [原創]CVE-2013-2251 Apache Struts 2 高危漏洞重現構造及漏洞原理分析2013-07-19Apache
- [原創]Adobe reader 漏洞CVE-2009-4324初步分析2010-01-10
- [原創] KCP 原始碼分析(上)2024-03-15原始碼
- 原創 | Ripple20:Treck TCP/IP協議棧漏洞分析與驗證(附視訊)2020-07-06TCP協議
- [原創]非常粗糙的FileFuzz原始碼[0325更新]2012-03-02原始碼
- [原創]破解-分析Crackme演算法2009-06-13演算法
- 【原創】需求分析之用例規模2010-01-13
- [原創]Java開發工具包URL引數遠端程式碼執行漏洞之分析2010-09-01Java