新手教程-爆破入门
【新手教程一】小Z以UPX為例,講解什么是殼,什么是壓縮殼?
UPX?(the Ultimate Packer for eXecutables)?殼大家都不陌生,基本上是我們學(xué)習(xí)破解時候?qū)W習(xí)的第一個殼。
我們來到吾愛破解,我們是來學(xué)習(xí)破解的,為什么讓我們非要學(xué)習(xí)脫殼呢?
? ?
雖然暫時不懂為什么要脫殼,我們可以先看看為什么要加殼?畢竟先有加殼才有脫殼的嘛(是先有雞呢?還是先有蛋呢?)
??一. 我寫的這個程序太多,想把它壓縮變小。那我就加壓縮殼。
<ignore_js_op>?
二. 我這是是一個商業(yè)的程序,是用來賺錢的,怎么可以被別人破解呢,那我就是加密保護(hù)殼
<ignore_js_op>?
三. 其他(病毒加殼,Anti-AntiVirus)
<ignore_js_op>?
今天就以壓縮殼為例,講講UPX壓縮殼的工作原理,等我學(xué)到了加密保護(hù)殼再去寫這方面的帖子好了。
UPX (the Ultimate Packer for eXecutables)是一款先進(jìn)的可執(zhí)行程序文件壓縮器,壓縮過的可執(zhí)行文件體積縮小50%-70% ,這樣減少了磁盤占用空間、網(wǎng)絡(luò)上傳下載的時間和其它分布以及存儲費用。 通過 UPX 壓縮過的程序和程序庫完全沒有功能損失和壓縮之前一樣可正常地運行,對于支持的大多數(shù)格式?jīng)]有運行時間或內(nèi)存的不利后果。 UPX 支持許多不同的可執(zhí)行文件格式 包含 Windows 95/98/ME/NT/2000/XP/CE 程序和動態(tài)鏈接庫、DOS 程序、 Linux 可執(zhí)行文件和核心。-百度百科
加殼:其實是利用特殊的算法,對EXE、DLL文件里的資源進(jìn)行壓縮。類似WINZIP 的效果,只不過這個壓縮之后的文件,可以獨立運行,解壓過程完全隱蔽,都在內(nèi)存中完成。解壓原理,是加殼工具在文件頭里加了一段指令,告訴CPU,怎么才能解壓自己。當(dāng)加殼時,其實就是給可執(zhí)行的文件加上個外衣。用戶執(zhí)行的只是這個外殼程序。當(dāng)執(zhí)行這個程序的時候這個殼就會把原來的程序在內(nèi)存中解開,解開后,以后的就交給真正的程序。-百度百科
? ? ----看完這2個關(guān)于百度百科的介紹,你似乎明白了點什么,但是還是很模糊。
? ? 壓縮殼到底是什么?
? ? ----UPX加殼程序的作用就是壓縮程序代碼,實現(xiàn)把可執(zhí)行文件的體積縮小50%~70%,
? ??那壓縮的原理是什么呢?
? ? 壓縮就好像把 可執(zhí)行文件中的?123456?用字母%A代替,789ABC用字母%C代替,這樣程序代碼的體積不久變小了很多。(要是可以這樣壓縮,這不都只有三分之一了,好機智)。看過《硅谷》這部美劇的同學(xué),現(xiàn)在應(yīng)該懂了吧,壓縮算法很賺錢。
? ? UPX殼既然壓縮了,那為什么還可以正常的運行呢?
? ? upx的工作原理其實是這樣的:首先將程序壓縮。
? ? 所謂的壓縮包括兩方面:
? ? 一方面在程序的開頭或者其他合適的地方?插入一段代碼。
? ? 另一方面是將程序的其他地方做壓縮(也就是上面講到的壓縮)。壓縮也可以叫做加密,因為壓縮后的程序比較難看懂,原來的代碼有很大的不同。
? ??
? ? 當(dāng)程序執(zhí)行時:實時的對程序解壓縮。解壓縮功能是在第一步時插入的代碼完成的功能。
? ? 聯(lián)起來就是:upx可以完成代碼的壓縮和實時解壓執(zhí)行。且不會影響程序的執(zhí)行效率。
? ??實時解壓的原理可以使用一下圖形表示:
<ignore_js_op>?
? ?程序從1開始執(zhí)行,而1的功能是將2,3,4解壓縮為7,8,9。7,8,9就是2,3,4在壓縮之前的形式。
???<ignore_js_op>?? ?
最初代碼的形式就應(yīng)該是:
<ignore_js_op>?
用upx壓縮之后形式為:
<ignore_js_op>?
執(zhí)行時的形式變?yōu)?#xff1a;
<ignore_js_op>?
? ???看完這些,你現(xiàn)在懂了為什么我們用F8單步法的時候,一直要向下,遇到向上的調(diào)整要F4執(zhí)行到下一條?? ? 其實就是想運行完1.UPX插入的代碼,同時讓UPX插入的代碼去解壓得到正在的7,8,9未壓縮的代碼。? ? 本次的講解到這里就完了,像小生大大說的那樣,你能在吾愛寫上一篇學(xué)習(xí)心得可能就能挽救一個準(zhǔn)備放棄的人,技術(shù)是共進(jìn)的,就是說在以后的技術(shù)生涯想依靠一己之力,是很有限的。? ?? ???? ? 我是一名破解新手,但是底層方面和編程能力方面還不錯,希望今天寫的帖子可以幫助到大家,特別是初學(xué)者。第一次分享技術(shù)貼,希望大家多多支持。@Hmily?@小生我怕怕
附件資源:脫殼前后的代碼比較(小生我怕怕教程第二課補充):鏈接:http://pan.baidu.com/s/1i3rjak9?密碼:dz9p
?【新手教程二】小Z帶你了解一個程序是怎么運行起來的?
這次教程,講解一個程序是怎么運行起來的?? ??
看完本篇,你可以明白你打開OD到底看的的是什么?
一.我還是上次的那個UPX程序
?
?
二.我被打開的必經(jīng)之路
?
三.開始我被放在了硬盤里面(不知道你們刪除了我沒有,自從作為了第一次作業(yè))
?
四.被你點擊之后,我被加載到了內(nèi)存之中。(就要被各種處理了,好怕怕)
?
五.當(dāng)我被加載到了內(nèi)存中,(什么都被你們看到了 T_T)
我其實一般可以給你看我的三個位置,好害羞
這是我的第一個部分
這是我的第二個部分
這是我的第三個部分
?
六.CPU要開始動手了,啊
寄存器的簡單說明:http://www.52pojie.cn/thread-388794-1-1.html
第二篇的課程到這里就結(jié)束了,對課程內(nèi)容有什么好的建議,一定要回帖告訴我呀。
下一次課的內(nèi)容,可能會將代碼是怎么一步一步的運行的,以及OD上一系列的問題,堆棧平衡等等。
我的目標(biāo):是通過對問題的本質(zhì)的理解,學(xué)習(xí)我們操作的原理。
如果你有什么了解的問題,也可以回帖告訴我,我會優(yōu)先構(gòu)思,加入到課程中。
也不知道這次的課程大家會不會喜歡。??@小生我怕怕?大大??@Hmily??大大 你們怎么看?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Chary/p/10643960.html
總結(jié)
- 上一篇: 【MongoDB异常】Exception
- 下一篇: 钢板多少钱啊?