mov eax, dword ptr [esi]指令区别

mov eax,esi 

将esi中的数据传送到eax中


mov eax,[esi] 

esi中是地址,将内存中该地址的数据传送到eax中,也就是间接寻址


mov eax, dword ptr [esi] 

dword表示的是双字,四字节。esi中保存的是为内存中的地址。将该地址处的4字节数据传送到eax中。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
易语言汇编替换字节集源码mov eax, dword ptr [ebp 08h]mov eax, dword ptr [eax]                取出ebp 08h地址(eax值加8后才是真实地址)add eax, 07h                            eax的值为: ebp 08h真实地址减去1( 08H是真实地址,此时 07H),少1是修正后边加替换位置超出的1字节add eax, dword ptr [ebp 0Ch]            ebp 0Ch结合ebp 08h确定替换位置,并存放到通用寄存器eaxmov edi, eax                            eax作为内存指针存放于寄存器edi------------------------------------------------------------------------------------------------------------------------------------------mov eax, dword ptr [ebp 10h]            计算ebp 10h字节集指针mov eax, dword ptr [eax]                计算ebp 10h字节集指针add eax, 08h                            计算ebp 10h字节集指针mov esi, eax                            ebp 10h字节集指针存放于esi------------------------------------------------------------------------------------------------------------------------------------------mov ecx, dword ptr [ebp 10h]            计算ebp 10h字节集长度mov ecx, dword ptr [ecx]                计算ebp 10h字节集长度mov ecx, dword ptr [ecx 04h]            ebp 10h字节集长度值存放到计数存储器ecxrep movsb                               重复操作,重复次数为ecx值,也就是用作替换的字节集长度值
SEH异常的应用 SEH异常就是结构化异常处理,程序遇到SEH异常时,异常交给系统处理(这讲是一个非常负责的过程,很容易跟飞),所以利用SEH异常时可以一定程度的防止程度调试(SEH异常在壳里是很常见的)。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** //地址压入堆栈 mov eax,dword ptr fs:[0] push eax //fs[0]压入堆栈,执行完成后fs[0]指向堆栈 mov dword ptr fs:[0],esp //构造一个ERR结构 mov esi,0 //简单的赋值语句 mov eax,dword ptr ds:[esi] //产生异常 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp mov ebx,0 div ebx ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ nop push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp int 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp nop int 68 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp nop vxdcall 134543 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp stc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp JMP 0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp ret ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp pop ss
易语言汇编替换字节集源码 mov eax, dword ptr [ebp+08h] mov eax, dword ptr [eax]                取出ebp+08h地址(eax值加8后才是真实地址) add eax, 07h                            eax的值为: ebp+08h真实地址减去1(+08H是真实地址,此时+07H),少1是修正后边加替换位置超出的1字节 add eax, dword ptr [ebp+0Ch]            ebp+0Ch结合ebp+08h确定替换位置,并存放到通用寄存器eax mov edi, eax                            eax作为内存指针存放于寄存器edi ------------------------------------------------------------------------------------------------------------------------------------------ mov eax, dword ptr [ebp+10h]            计算ebp+10h字节集指针 mov eax, dword ptr [eax]                计算ebp+10h字节集指针 add eax, 08h                            计算ebp+10h字节集指针 mov esi, eax                            ebp+10h字节集指针存放于esi ------------------------------------------------------------------------------------------------------------------------------------------ mov ecx, dword ptr [ebp+10h]            计算ebp+10h字节集长度 mov ecx, dword ptr [ecx]                计算ebp+10h字节集长度 mov ecx, dword ptr [ecx+04h]            ebp+10h字节集长度值存放到计数存储器ecx rep movsb                               重复操作,重复次数为ecx值,也就是用作替换的字节集长度值
首先,查壳,使用PEID或者是FI,为UPX v1.08 接下来用OD载入,提示为“压缩代码是否继续分析”,我们选择否 我在这里介绍几种方法,请看我的操作。 方法1:单步跟踪(最常见的方法) 0040E8C0 N> 60 pushad //停在这里了,我们F8单步 0040E8C1 BE 15B04000 mov esi,NOTEPAD.0040B015 0040E8C6 8DBE EB5FFFFF lea edi,dword ptr ds:[esi+FFFF> 0040E8CC 57 push edi 0040E8CD 83CD FF or ebp,FFFFFFFF 0040E8D0 EB 10 jmp short NOTEPAD.0040E8E2 //跳 。。。。。。。。。。 0040E8E2 8B1E mov ebx,dword ptr ds:[esi] //跳到这里,继续单步 0040E8E4 83EE FC sub esi,-4 0040E8E7 11DB adc ebx,ebx 0040E8E9 ^ 72 ED jb short NOTEPAD.0040E8D8 //这里要往回跳了 0040E8EB B8 01000000 mov eax,1 //F4,然后继续F8 0040E8F0 01DB add ebx,ebx 0040E8F2 75 07 jnz short NOTEPAD.0040E8FB //跳 。。。。。。。。。。。 0040E8FB 11C0 adc eax,eax //来到这里,F8继续 0040E8FD 01DB add ebx,ebx 0040E8FD 01DB add ebx,ebx 0040E8FF ^ 73 EF jnb short NOTEPAD.0040E8F0 0040E901 75 09 jnz short NOTEPAD.0040E90C //跳 。。。。。。。。。。。 0040E90C 31C9 xor ecx,ecx //跳到这里,继续F8 0040E90E 83E8 03 sub eax,3 0040E90E 83E8 03 sub eax,3 0040E911 72 0D jb short NOTEPAD.0040E920 //跳 。。。。。。。。。。。 0040E920 01DB add ebx,ebx //跳到这里,继续F8 0040E922 75 07 jnz short NOTEPAD.0040E92B //跳 。。。。。。。。。。。 0040E92B 11C9 adc ecx,ecx //跳到了这里,继续F8 0040E92D 01DB add ebx,ebx 0040E92F 75 07 jnz short NOTEPAD.0040E938 //跳 。。。。。。。。。。。 0040E938 11C9 adc ecx,ecx //跳到这里,继续F8 0040E93A 75 20 jnz short NOTEPAD.0040E95C //跳 。。。。。。。。。。。 0040E95C 81FD 00F3FFFF cmp ebp,-0D00 //来到这,继续F8 0040E962 83D1 01 adc ecx,1 0040E965 8D142F lea edx,dword ptr ds:[edi+ebp] 0040E968 83FD FC

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值