西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
西西首頁 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

通用脫殼機(linxerUnpacker)

中文綠色版
  • 通用脫殼機(linxerUnpacker)中文綠色版
  • 軟件大小:263KB
  • 更新時間:2011-08-21 12:43
  • 軟件語言:中文
  • 軟件廠商:
  • 軟件類別:國產(chǎn)軟件 / 免費軟件 / 加殼脫殼
  • 軟件等級:4級
  • 應(yīng)用平臺:WinXP
  • 官方網(wǎng)站:http://www.xuetr.com/?p=11
  • 應(yīng)用備案:
好評:50%
壞評:50%

軟件介紹

近期準(zhǔn)備寫個比較通用的脫殼機,其實現(xiàn)在很多具有一定通用性的脫殼機都是基于虛擬CPU的,跟虛擬機似的,個也不例外,但是由于它們仿真程度的不同,決定了它們解殼的能力,當(dāng)然我是想把它做的解殼能力比較強,否則也沒有必要寫了......想在虛擬CPU上支持多線程,簡單的多進程等特性,這樣它的解殼能力應(yīng)該是有點“猛”,不過,這都還處于假想階段,深知要做成這個,技術(shù)門檻相當(dāng)?shù)母撸隽吮救四芰,不過還是抱著學(xué)習(xí)研究的態(tài)度,往下寫吧,現(xiàn)在做人都講究“無求”了......

基于虛擬CPU的解殼機效率肯定比較低,本人將盡量優(yōu)化算法,使它能盡量的快......

程序特色:

1.純C開發(fā)
2.自己寫了內(nèi)存適配器,堅決避免內(nèi)存內(nèi)碎片,有效遏制內(nèi)存外碎片
3.充分利用程序局部性原理,仿真CPU具有cache功能
4.數(shù)據(jù)結(jié)構(gòu)一般采用哈希表,紅黑樹,比較高效快速
5.為了高效脫殼,仿真CPU很多地方?jīng)]有監(jiān)聽,導(dǎo)致有些脫殼方法比較笨,針對某殼特性,局部監(jiān)聽特定異常.

更新日志:

3月11號:
由于某原因,搬家至回龍觀龍博一區(qū),放棄linux內(nèi)核研究,啟動脫殼機項目

3月28日前:
完成x86機器碼的識別

4月8號前:
大致寫了虛擬 ring 3 x86 cpu代碼,沒有測試,體力活,沒有技術(shù)含量

4月15日前:
修正虛擬CPU bug,基本調(diào)至能解UPX殼了,馬馬虎虎寫了個dump模塊,目前一調(diào)用,程序死了

4月23日前:
花了兩天時間,調(diào)試dump模塊,對“菜殼”通用的dump模塊橫空出世,花了兩天時間模擬了SEH異常處理鏈,
開始支持異常處理(包括展開式SEH處理),優(yōu)化了CPU指令解析系性能,核心部位全匯編實現(xiàn)

5月2號前:
具體細的也沒有辦法講了,在調(diào)試殼的過程中,修正了不少bug,也為了脫一些殼,加入了不少新的特性,
最重要的是修正了dump模塊一些bug,新增IAT表備份等功能,一個對“菜殼”比較通用的dump模塊產(chǎn)生,
脫某殼時,發(fā)現(xiàn)程序執(zhí)行過程中,切換堆棧到代碼數(shù)據(jù)空間了,虛擬CPU剛設(shè)計的時候,為了效率,沒有把堆棧
內(nèi)存空間統(tǒng)一到“進程”空間,這里也統(tǒng)一它們了,并改了堆棧邊界判定
脫petite的時候,利用堆棧代碼執(zhí)行技術(shù),不過堆?臻g統(tǒng)一了,這個不是問題
脫petite的時候,仿真了FS段的局部功能,不光是SEH了
程序堆棧布局也再次調(diào)整了,有些殼利用系統(tǒng)load時壓入的堆棧(程序啟動代碼壓入的值,我們的PE load
沒有程序啟動功能,故需仿真之)

5月2號-3號:
脫petite v2.x,這款殼有點捍,用了可讀內(nèi)存寫異常,單步異常,EIP=0異常,虛擬機新增了對這些異常的捕獲,
另外,這款殼對IAT表的處理跟以前脫的殼不同,它自己分析的PE文件,這個不想模擬了,要模擬也簡單,
因此這款脫目前脫出來還不可運行...感慨萬千,這款脫搞得我要搖搖欲墜了

5月4號凌晨:
脫了winkript 1.0 和 pklite32 1.1,這兩個殼很弱,沒有什么說的
5月4號白天:
上午脫pepack 0.99 和 pepack 1.0,這款殼API調(diào)用采用jmp [x]方式,仿真了這個特性
下午脫pcshrinker 0.71,這款殼存在指令自修改現(xiàn)象,修正了指令自修改時,cache失效的一個bug,及時刷新cache指令集
下午晚上脫wwpack32 1.2 demo,這殼很弱,不過它用了SHLD指令,仿真CPU新增了對SHLD/SHRD指令的支持

5月5號上午:
昨天晚上發(fā)現(xiàn)脫upack v0.32時,PE load模塊有重大bug,由于upack v0.32的PE頭很亂,保存了很多
信息......昨天晚上研究了windows load過程,很有收獲啊(http://bbs.pediy.com/showthread.php?t=43928)
上午修正了這個bug,upack v0.32被脫,這個殼注重的是壓縮效果,沒有什么其它特點
5月5號21:42前:
脫下upack v0.36,這里還是繼續(xù)研究PE load模塊,節(jié)的對齊問題
21:49脫下upack v0.37,這個殼跟upack v0.36一樣
21:53脫下upack v0.38,這個殼跟upack v0.36一樣
21:58脫下upack v0.39,這個殼跟upack v0.36一樣
22:01脫下upack v0.399,這個殼跟upack v0.36一樣
23:10脫下upack v0.23,修正CMPS,SCANS指令沒有前綴卻改寫了ECX值的bug,脫法跟upack v0.32一樣

5月6號:
1:36脫下rlpack Basic Edition v1.18,這個殼很簡單,脫這個殼修正了dump新加節(jié)后,PE頭大小非法,導(dǎo)致程序無法運行bug
1:45脫下rlpack Basic Edition v1.11
1:49脫下rlpack Basic Edition v1.12,脫法跟rlpack Basic Edition v1.11一樣
1:54脫下rlpack Basic Edition v1.13,脫法跟rlpack Basic Edition v1.11一樣
1:57脫下rlpack Basic Edition v1.14,脫法跟rlpack Basic Edition v1.11一樣
2:00脫下rlpack Basic Edition v1.15,脫法跟rlpack Basic Edition v1.18一樣
2:03脫下rlpack Basic Edition v1.16,脫法跟rlpack Basic Edition v1.18一樣
2:42脫下rlpack Basic Edition v1.17,脫法跟rlpack Basic Edition v1.18一樣

16:16脫下exe32pack v1.42,這款殼用了IsDebuggerPresent函數(shù)來檢測是否被調(diào)試,并讀取IsDebuggerPresent地址
第一個字節(jié)來判定是否0xcc,即是否在IsDebuggerPresent上下斷點了,這里粗略仿真了API地址空間,這個殼還破壞了PE頭,
這里引入了是否脫殼后采用原來PE頭功能(這系列殼的低版本沒有效驗IsDebuggerPresent是否被下斷點,應(yīng)該也能搞定,
苦于沒有找到加殼工具,無法驗證設(shè)想),并修正了ADD(0x00)指令的一處bug,load模塊也引入了多個Dll對應(yīng)一個FirstThunk的處理方法
22:17脫下kbys v0.28,這款殼比較簡單,不過它的VirtualFree通過retn來執(zhí)行,這里仿真了這個屬性在ret解析函數(shù),
不過,其實應(yīng)該在每個指令執(zhí)行后,都要有這樣的處理,但處于效率,且目前只有kbys這么用,就只在retn中這么干了

5月7號:
1:15脫了aspack系列余下的所有殼,均秒殺之
13:00脫了upx系列余下的殼,均秒殺之
22:18脫了fsg v1.0 v2.0,v2.0系統(tǒng)自動掃描到的IAT只是張函數(shù)地址表,各dll函數(shù)地址間沒有0隔開,
于是又寫了個dump,這個dump實現(xiàn)了新建IAT,讓人失望,call/jmp訪問系統(tǒng)無問題,但是一些通過其它指令
來訪問系統(tǒng)的API沒有辦法工作了,貌似除了手工分析外,這個問題無法解決,唉,最后通過修改無效API地址為0,
解決這個問題

5月8號:
脫了morphine v1.3 v1.6,這兩個殼,代碼被解密出來,無法dump

5月9號:
脫了morphine v2.7,這個殼,由于TEB沒有仿真,沒有脫完,但是真實代碼已經(jīng)出來了,
從偏移nSizeBase開始掃描即可,無法dump
23:37脫了PECompact系列余下的殼,基本上秒殺

5月13號:
02:18脫了yoda's protector v1.02,這是個加密殼,6次SEH異常(5次是int3,1次訪問0地址異常),
IsDebuggerPresent 3次,反softice等調(diào)試器,枚舉進程列表來檢測父進程信息(檢測父進程是否為
EXPLORER.EXE),判定是否被調(diào)試,WaitForInputIdle來鎖定輸入設(shè)備,讀取自身文件自效驗等......
21:00脫了yoda's protector v1.03.2,這個殼比v1.02更加飆旱,BlockInput鎖鼠標(biāo)鍵盤,SetWindowLongA
鎖任務(wù)欄,解密用win解密API
次日0:53脫了yoda's crypt v1.2 v1.3,修正自修改模塊的一處bug,能脫yp脫yc沒難度

5月14號:
22:20脫了EXE Stealth v2.75a v2.76,這個殼跟yc一個模樣
22:54脫了EXE Stealth v2.72 v2.73 v2.74,脫法跟v2.75a一樣

5月15號:
00:25脫了bjfnt v1.2,引入ESP定律脫殼,這殼沒有特征好用,只能ESP定律了,無奈
00:30脫了bjfnt v1.3,脫法和bjfnt v1.2一樣 (均存在導(dǎo)入表不對)
20:43脫了HidePE v1.1,只是加了幾條指令騙下PEID,HidePE v1.0脫法一樣

5月16號:
00:40脫下jdpack v1.01,修正PE load模塊的一處bug,修正反匯編模塊結(jié)束虛擬地址導(dǎo)致的一個與自修改相關(guān)bug
20:39脫了jdpack v2.0,對這個殼,只能說fk,對示例程序int3異常38萬多次,OD無法調(diào),估計這也是沒有看到這個殼脫文的原因
20:48脫了jdpack v2.13,這個殼脫法跟jdpack v1.01一樣
21:32脫了PEncrypt v3.1, so easy!

5月17號:
00:39脫了PEncrypt v4.0,這個殼沒有啥特征,不好判定什么脫完了啊
20:03修正了脫PEncrypt4.0脫法,引入類似OEP識別技術(shù)來脫殼,并為popaf引入對單步異常的監(jiān)聽
20:25脫了Stone's PE Crypt v1.13, so easy!

5月18號:
20:48脫了telock v0.42

5月19號:
00:40前,加入反匯編模塊專用內(nèi)存,并設(shè)置上限,防止在執(zhí)行某些程序的時候,內(nèi)存過大問題
14:16脫了telock v0.51,加入IAT預(yù)處理,針對telock v0.51加密IAT情況
15:40脫了telock v0.60
18:15脫了telock v0.70,引入整數(shù)除0異常捕獲
telock v0.80利用了自己分析kernel32.dll來導(dǎo)出函數(shù),無法脫
23:49脫下ezip v1.0,仿真了SetFilePointer函數(shù),修正了neg指令在標(biāo)志位影響上的bug

5月20號
00:49脫下hmimys-packer v1.0, so easy!
1:24脫下jdprotect v0.9b, so easy! 仿真lstrcmp
16:44脫了lamecrypt,脫法跟ezip一樣
19:11脫了UPolyX v0.51,脫法基本跟UPX一樣
19:41脫StealthPE 1.01
21:01脫StealthPE 2.2
22:57脫depack
23:17脫濤濤壓縮器(跟kbys一樣)

5月21號
20:22脫了polyene 0.01
21:21脫了DragonArmour
21:44脫EP Protector v0.3,只是入口點混淆了下
23:09脫BeRoEXEPacker
00:01脫PackItBitch

5月23號
23:27脫了木馬彩衣,這個只是個入口點篡改工具

5月26號
01:43優(yōu)化反匯編模塊完成
17:57優(yōu)化CPU尋址系統(tǒng)完成

6月2號
01:24完成了PEID的功能(殼的準(zhǔn)確快速識別),并修正了upx,aspack的脫殼方法,使之向殼識別不精確度靠攏,
即一種殼要盡量少的脫殼函數(shù),這是因為殼識別到版本的不精確性決定的

6月5號
00:14當(dāng)殼在脫殼過程中不動態(tài)導(dǎo)入IAT時,但殼用在脫殼中破壞函數(shù)名等信息,導(dǎo)致無法重建導(dǎo)入表,這里
寫了個在脫殼前全備份導(dǎo)入表的模塊,這樣bjfnt系列殼導(dǎo)入表就完全沒有問題了

6月6號
00:10,寫了petite1.3導(dǎo)入表的情況處理模塊,這個殼在脫殼過程中沒有動態(tài)導(dǎo)入函數(shù),而且復(fù)制了IAT供解殼后程序
用,寫了針對這種情況的導(dǎo)入表重建模塊

6月9號
17:25完成所有目前能脫殼的全自動化脫殼,從脫識別到調(diào)用對應(yīng)函數(shù)脫殼,全自動化(這幾天天氣賊熱,困)
15:36脫了mkfpack,很簡單的一個壓縮殼

6月11號
21:41脫下anti007 v2.5,仿真了加載系統(tǒng)dll功能,支持自己分析dll導(dǎo)出函數(shù),這樣一大批殼又可以被脫了
21:40脫下anti007 v2.6,LoadLibraryA("bqo.dll")敏感

6月12號
00:49脫下upack v3.5,仿真kernel32.dll基地自動發(fā)掘技術(shù)(通過EDX)
22:14脫下yzpack v1.1,仿真了另一種kernel32.dll基址自動發(fā)掘技術(shù)(通過TEB),修正pe load的函數(shù)導(dǎo)入bug
22:57脫下yzpack v1.2,仿真了cmovcc系列指令
23:20脫下yzpack v2.0beta, so easy!
23:47脫下spack_method1 v1.1, so easy!

6月13號
20:53脫下spack_method2 v1.1,用了int2e來反調(diào)試
21:19脫下spack_method1 v1.2,spack_method2 v1.2
21:22脫下spack_method1 v1.21,spack_method2 v1.21
21:29脫下spack v1.0
23:02脫下仙劍1001,脫法跟yc1.2一樣
23:10脫下仙劍1000,脫法跟yc1.2一樣
23:19脫下仙劍看雪測試版,脫法跟yc1.2一樣

6月14號
00:36脫下仙劍1003,脫法跟yc1.2一樣,仿真_lopen,這個殼在開始的時候用pf=1來跳,寫了jpe解析函數(shù),估計以后出問題在這里,要仿真PF?
22:03脫下xpal4(仙劍-舊的回憶4)
23:46脫下仙劍-凄涼雪,MD,它居然對每個API效驗了前8個字節(jié)是否被0xcc

6月15號
00:39脫下仙劍-望海潮,它用lock cmpxchg8b eax來觸發(fā)異常,這個指令是不能操作寄存器的
22:25處理了petite v2.2導(dǎo)入表加密,加密了,這樣這個殼脫后可以運行了,hoho

6月16號
01:27處理了petite v2.3,這個殼脫后可以運行了
12:48脫下telock v0.80
12:49脫下telock v0.85,性質(zhì)跟telock v0.80一樣
15:07脫下telock v.90,性質(zhì)跟telock v0.80一樣,但是IAT加密方式已經(jīng)不同了,加入對這個的處理代碼

6月17號
00:55脫下telock v.92,仿真了用調(diào)試寄存器觸發(fā)單步異常,MD,這個殼太強悍了
11:35脫下telock v.95,性質(zhì)跟telock v.92一樣,但是IAT加密方式不同,很強悍啊,寫了用虛擬機執(zhí)行IAT加密函數(shù)發(fā)掘API代碼
11:49脫下telock v.96,性質(zhì)跟telock v.95一樣
11:57脫下telock v.98,性質(zhì)跟telock v.95一樣
17:34脫下telock v.99,性質(zhì)跟telock v.95一樣,不過先前版本CRC效驗只從文件中讀數(shù)據(jù),這個殼還從load后程序中效驗了,MD,導(dǎo)入模塊時
我把dll名稱改成小寫了,MD,導(dǎo)致CRC效驗不過,調(diào)得我要搖搖欲墜了

6月18號
00:56脫下mslrh0.31,MD,到處都是rdtsc,還有oep steal code,還原了被偷代碼
20:42脫下mslrh0.32,MD,脫到了抽OEP處,被抽代碼比較復(fù)雜,沒有還原,dump后程序可以運行
20:55脫下[G!X]'s Protect(貌似mslrh0.2)

6月19號
23:47完成更嚴(yán)格的堆棧效驗,完成編譯器識別功能

軟件標(biāo)簽: 脫殼
這是 XueTr  作者寫的一個通用脫殼機,帶VC源代碼。

軟件截圖

通用脫殼機(linxerUnpacker) 中文綠色版

其他版本下載

發(fā)表評論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評論 > 字?jǐn)?shù): 0/500

TOP
軟件下載