解讀一個(gè)簡(jiǎn)單程序的反編譯_.Net教程
推薦:解讀ASP.NET中的IFRAME框架掛馬安全工程師,要能獨(dú)立負(fù)責(zé)網(wǎng)站安全、局域網(wǎng)安全、服務(wù)器安全等,要了解網(wǎng)頁(yè)掛馬有IFRAME框架掛馬、JS文件掛馬、偽裝掛馬、CSS掛馬、ActiveX組件掛馬等方式,這樣才可以有針對(duì)性地進(jìn)行防范,避免網(wǎng)站和服務(wù)器等安全威脅。下面,我們來(lái)邁出成長(zhǎng)為安全工程師的
看了老趙的博客從匯編入手,探究泛型的性能問(wèn)題 ,突然想起以前自己寫過(guò)一個(gè)關(guān)于反匯編的文章,特轉(zhuǎn)過(guò)來(lái)。
源代碼如下:
|
以下為引用的內(nèi)容: void main(){ |
在我的機(jī)器上,32位VS2008+32位VISTA匯編是,此時(shí)是debug未優(yōu)化模式:
|
以下為引用的內(nèi)容: 013810D0 /$ 55 push ebp |
進(jìn)入函數(shù)myfunction:
|
以下為引用的內(nèi)容: 01381000 /$ 55 push ebp |
比較容易就能看懂,下面是MAXIMIZE SPEED優(yōu)化:
|
以下為引用的內(nèi)容: 01391080 /$ 83EC 6C sub esp, 6C 01391083 . BA 01000000 mov edx, 1 01391088 . B9 02000000 mov ecx, 2 0139108D . B8 03000000 mov eax, 3 01391092 . 895424 24 mov dword ptr [esp+24], edx 01391096 . 895424 28 mov dword ptr [esp+28], edx 0139109A . 895424 2C mov dword ptr [esp+2C], edx 0139109E . 894C24 30 mov dword ptr [esp+30], ecx 013910A2 . 894C24 34 mov dword ptr [esp+34], ecx 013910A6 . 894C24 38 mov dword ptr [esp+38], ecx 013910AA . 894424 3C mov dword ptr [esp+3C], eax 013910AE . 894424 40 mov dword ptr [esp+40], eax 013910B2 . 894424 44 mov dword ptr [esp+44], eax 013910B6 . 890424 mov dword ptr [esp], eax 013910B9 . 894424 04 mov dword ptr [esp+4], eax 013910BD . 894424 08 mov dword ptr [esp+8], eax 013910C1 . 894C24 0C mov dword ptr [esp+C], ecx 013910C5 . 894C24 10 mov dword ptr [esp+10], ecx 013910C9 . 894C24 14 mov dword ptr [esp+14], ecx 013910CD . 895424 18 mov dword ptr [esp+18], edx 013910D1 . 895424 1C mov dword ptr [esp+1C], edx 013910D5 . 895424 20 mov dword ptr [esp+20], edx 013910D9 . 8D4C24 48 lea ecx, dword ptr [esp+48];數(shù)組c 013910DD . 8D0424 lea eax, dword ptr [esp]; 數(shù)組b 013910E0 . 8D5424 24 lea edx, dword ptr [esp+24];數(shù)組a 013910E4 . E8 17FFFFFF call 01391000 013910E9 . 33C0 xor eax, eax 013910EB . 83C4 6C add esp, 6C 013910EE \. C3 retn |
同樣,初始化數(shù)組,只不過(guò)是改用了寄存器初始化,同樣在初始化完成后壓入數(shù)組的首地址。
|
以下為引用的內(nèi)容: 01391000 /$ 83EC 08 sub esp, 8 |
最后是MININIZE SIZE模式:
這個(gè)模式下直接合并(還是 應(yīng)該叫內(nèi)聯(lián))了main和myFunction子函數(shù)。
|
以下為引用的內(nèi)容: 00ED1000 /$ 55 push ebp |
后記:未優(yōu)化模式就是原生代碼,其調(diào)式期間可以和源代碼一 一對(duì)應(yīng),maxspeed模式則盡可能將操作放在寄存器內(nèi)完成,并且有一定的算法優(yōu)化;而最小代碼模式則通過(guò)合并部分代碼,盡可能的通過(guò)EBP比例變址尋址,完成對(duì)二維數(shù)組的訪問(wèn)。
分享:怎樣使ASP.NET從字符串中查找字符出現(xiàn)的次數(shù)今天在一場(chǎng)
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- ASP.NET調(diào)用oracle存儲(chǔ)過(guò)程實(shí)現(xiàn)快速分頁(yè)
- asp.net MVC實(shí)現(xiàn)無(wú)組件上傳圖片實(shí)例介紹
- 如何使用LINQ來(lái)簡(jiǎn)化編程
- asp.net基礎(chǔ)知識(shí)介紹
- 怎樣在ASP.NET項(xiàng)目里面正確使用Linq to Sql
- 讓沒有安裝.NET Framwork的機(jī)器運(yùn)行.NET 程序
- 一個(gè)不被flash、select、activex遮擋的、跨frame的無(wú)限分級(jí)菜單
- Asp.net中的mail的發(fā)送
- 用 asp.net 動(dòng)態(tài)設(shè)置 WebService 引用
- 基于自定義Unity生存期模型PerCallContextLifeTimeManager的問(wèn)題
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-解讀一個(gè)簡(jiǎn)單程序的反編譯
。