解读一个简单程序的反编译_.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教程-解读一个简单程序的反编译。