解讀一個簡單程序的反編譯_.Net教程
推薦:解讀ASP.NET中的IFRAME框架掛馬安全工程師,要能獨立負責網站安全、局域網安全、服務器安全等,要了解網頁掛馬有IFRAME框架掛馬、JS文件掛馬、偽裝掛馬、CSS掛馬、ActiveX組件掛馬等方式,這樣才可以有針對性地進行防范,避免網站和服務器等安全威脅。下面,我們來邁出成長為安全工程師的
看了老趙的博客從匯編入手,探究泛型的性能問題 ,突然想起以前自己寫過一個關于反匯編的文章,特轉過來。
源代碼如下:
以下為引用的內容: void main(){ |
在我的機器上,32位VS2008+32位VISTA匯編是,此時是debug未優化模式:
以下為引用的內容: 013810D0 /$ 55 push ebp |
進入函數myfunction:
以下為引用的內容: 01381000 /$ 55 push ebp |
比較容易就能看懂,下面是MAXIMIZE SPEED優化:
以下為引用的內容: main--maxspeed
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];數組c 013910DD . 8D0424 lea eax, dword ptr [esp]; 數組b 013910E0 . 8D5424 24 lea edx, dword ptr [esp+24];數組a 013910E4 . E8 17FFFFFF call 01391000 013910E9 . 33C0 xor eax, eax 013910EB . 83C4 6C add esp, 6C 013910EE \. C3 retn |
同樣,初始化數組,只不過是改用了寄存器初始化,同樣在初始化完成后壓入數組的首地址。
以下為引用的內容: 01391000 /$ 83EC 08 sub esp, 8 |
最后是MININIZE SIZE模式:
這個模式下直接合并(還是 應該叫內聯)了main和myFunction子函數。
以下為引用的內容: 00ED1000 /$ 55 push ebp |
后記:未優化模式就是原生代碼,其調式期間可以和源代碼一 一對應,maxspeed模式則盡可能將操作放在寄存器內完成,并且有一定的算法優化;而最小代碼模式則通過合并部分代碼,盡可能的通過EBP比例變址尋址,完成對二維數組的訪問。
分享:怎樣使ASP.NET從字符串中查找字符出現的次數今天在一場
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發送Email實例(可帶附件)
- js實現廣告漂浮效果的小例子
- asp.net Repeater 數據綁定的具體實現
- Asp.Net 無刷新文件上傳并顯示進度條的實現方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數據庫(連接字符串的配置及獲取)
- asp.net頁面傳值測試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現分頁示例代碼
- 相關鏈接:
- 教程說明:
.Net教程-解讀一個簡單程序的反編譯。