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

通用脫殼機(jī)(linxerUnpacker)

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

軟件介紹

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

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

程序特色:

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

更新日志:

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

3月28日前:
完成x86機(jī)器碼的識(shí)別

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

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

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

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

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

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

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

5月6號(hào):
1:36脫下rlpack Basic Edition v1.18,這個(gè)殼很簡(jiǎn)單,脫這個(gè)殼修正了dump新加節(jié)后,PE頭大小非法,導(dǎo)致程序無(wú)法運(yùn)行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ù)來(lái)檢測(cè)是否被調(diào)試,并讀取IsDebuggerPresent地址
第一個(gè)字節(jié)來(lái)判定是否0xcc,即是否在IsDebuggerPresent上下斷點(diǎn)了,這里粗略仿真了API地址空間,這個(gè)殼還破壞了PE頭,
這里引入了是否脫殼后采用原來(lái)PE頭功能(這系列殼的低版本沒(méi)有效驗(yàn)IsDebuggerPresent是否被下斷點(diǎn),應(yīng)該也能搞定,
苦于沒(méi)有找到加殼工具,無(wú)法驗(yàn)證設(shè)想),并修正了ADD(0x00)指令的一處bug,load模塊也引入了多個(gè)Dll對(duì)應(yīng)一個(gè)FirstThunk的處理方法
22:17脫下kbys v0.28,這款殼比較簡(jiǎn)單,不過(guò)它的VirtualFree通過(guò)retn來(lái)執(zhí)行,這里仿真了這個(gè)屬性在ret解析函數(shù),
不過(guò),其實(shí)應(yīng)該在每個(gè)指令執(zhí)行后,都要有這樣的處理,但處于效率,且目前只有kbys這么用,就只在retn中這么干了

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

5月8號(hào):
脫了morphine v1.3 v1.6,這兩個(gè)殼,代碼被解密出來(lái),無(wú)法dump

5月9號(hào):
脫了morphine v2.7,這個(gè)殼,由于TEB沒(méi)有仿真,沒(méi)有脫完,但是真實(shí)代碼已經(jīng)出來(lái)了,
從偏移nSizeBase開(kāi)始掃描即可,無(wú)法dump
23:37脫了PECompact系列余下的殼,基本上秒殺

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

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

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

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

5月17號(hào):
00:39脫了PEncrypt v4.0,這個(gè)殼沒(méi)有啥特征,不好判定什么脫完了啊
20:03修正了脫P(yáng)Encrypt4.0脫法,引入類似OEP識(shí)別技術(shù)來(lái)脫殼,并為popaf引入對(duì)單步異常的監(jiān)聽(tīng)
20:25脫了Stone's PE Crypt v1.13, so easy!

5月18號(hào):
20:48脫了telock v0.42

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

5月20號(hào)
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號(hào)
20:22脫了polyene 0.01
21:21脫了DragonArmour
21:44脫EP Protector v0.3,只是入口點(diǎn)混淆了下
23:09脫BeRoEXEPacker
00:01脫P(yáng)ackItBitch

5月23號(hào)
23:27脫了木馬彩衣,這個(gè)只是個(gè)入口點(diǎn)篡改工具

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

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

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

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

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

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

6月12號(hào)
00:49脫下upack v3.5,仿真kernel32.dll基地自動(dòng)發(fā)掘技術(shù)(通過(guò)EDX)
22:14脫下yzpack v1.1,仿真了另一種kernel32.dll基址自動(dòng)發(fā)掘技術(shù)(通過(guò)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號(hào)
20:53脫下spack_method2 v1.1,用了int2e來(lái)反調(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脫下仙劍看雪測(cè)試版,脫法跟yc1.2一樣

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

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

6月16號(hào)
01:27處理了petite v2.3,這個(gè)殼脫后可以運(yùn)行了
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)不同了,加入對(duì)這個(gè)的處理代碼

6月17號(hào)
00:55脫下telock v.92,仿真了用調(diào)試寄存器觸發(fā)單步異常,MD,這個(gè)殼太強(qiáng)悍了
11:35脫下telock v.95,性質(zhì)跟telock v.92一樣,但是IAT加密方式不同,很強(qiáng)悍啊,寫了用虛擬機(jī)執(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一樣,不過(guò)先前版本CRC效驗(yàn)只從文件中讀數(shù)據(jù),這個(gè)殼還從load后程序中效驗(yàn)了,MD,導(dǎo)入模塊時(shí)
我把dll名稱改成小寫了,MD,導(dǎo)致CRC效驗(yàn)不過(guò),調(diào)得我要搖搖欲墜了

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

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

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

其他版本下載

發(fā)表評(píng)論

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

TOP
軟件下載