解讀一個(gè)簡單程序的反編譯_.Net教程
推薦:解讀ASP.NET中的IFRAME框架掛馬安全工程師,要能獨(dú)立負(fù)責(zé)網(wǎng)站安全、局域網(wǎng)安全、服務(wù)器安全等,要了解網(wǎng)頁掛馬有IFRAME框架掛馬、JS文件掛馬、偽裝掛馬、CSS掛馬、ActiveX組件掛馬等方式,這樣才可以有針對(duì)性地進(jìn)行防范,避免網(wǎng)站和服務(wù)器等安全威脅。下面,我們來邁出成長為安全工程師的
看了老趙的博客從匯編入手,探究泛型的性能問題 ,突然想起以前自己寫過一個(gè)關(guān)于反匯編的文章,特轉(zhuǎn)過來。
源代碼如下:
|
以下為引用的內(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ù)組,只不過是改用了寄存器初始化,同樣在初始化完成后壓入數(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)化;而最小代碼模式則通過合并部分代碼,盡可能的通過EBP比例變址尋址,完成對(duì)二維數(shù)組的訪問。
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過程實(shí)現(xiàn)分頁示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- ASP.NET調(diào)用oracle存儲(chǔ)過程實(shí)現(xiàn)快速分頁
- asp.net MVC實(shí)現(xiàn)無組件上傳圖片實(shí)例介紹
- 如何使用LINQ來簡化編程
- asp.net基礎(chǔ)知識(shí)介紹
- 怎樣在ASP.NET項(xiàng)目里面正確使用Linq to Sql
- 讓沒有安裝.NET Framwork的機(jī)器運(yùn)行.NET 程序
- 一個(gè)不被flash、select、activex遮擋的、跨frame的無限分級(jí)菜單
- Asp.net中的mail的發(fā)送
- 用 asp.net 動(dòng)態(tài)設(shè)置 WebService 引用
- 基于自定義Unity生存期模型PerCallContextLifeTimeManager的問題
- 相關(guān)鏈接:
- 教程說明:
.Net教程-解讀一個(gè)簡單程序的反編譯
。