鱼C论坛

 找回密码
 立即注册
查看: 3473|回复: 19

[已解决]关于vc6。0 一个mov语句的问题

[复制链接]
发表于 2017-4-8 16:48:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
729223_tg5m150852fyy1f.png
放在内存的是偏移地址,为什么结果是将符号b赋值给了变量
最佳答案
2017-4-8 21:38:32
萌新鱼油 发表于 2017-4-8 20:52
00401028内存查询如下

00401028    66  C7  45  FC  62  00  5F

a.asm
[bits 32]

db 0x66, 0xc7, 0x45, 0xfc, 0x62, 0x00, 0x5F, 0x5e, 0x5b, 0x8b, 0xe5, 0x5d, 0xc3, 0xcc

用nasm 编译
nasm a.asm -o a.obj

用ndisasm 反汇编
ndisasm -b 32 a.obj
00000000  66C745FC6200      mov word [ebp-0x4],0x62
00000006  5F                pop edi
00000007  5E                pop esi
00000008  5B                pop ebx
00000009  8BE5              mov esp,ebp
0000000B  5D                pop ebp
0000000C  C3                ret
0000000D  CC                int3

00000000  66C745FC6200      mov word [ebp-0x4],0x62
可以看到是把0x62写到 ebp-0x4 的位置

看来是vc6翻译错了?
mov word ptr [ebp-8],offset main+80h(00401210)

不过现在又发现一个问题,为什么是ebp - 8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-8 17:09:08 | 显示全部楼层
不明白你想问什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-8 17:21:38 | 显示全部楼层
人造人 发表于 2017-4-8 17:09
不明白你想问什么

就是请问下为什么
mov word ptr [ebp-8],offset main+80h(00401210)
这句实现了
wchar_t b='b'的功能?

我对这句的理解是 仅仅将一个偏移地址赋给了变量b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 17:51:55 | 显示全部楼层
haha_91 发表于 2017-4-8 17:21
就是请问下为什么
mov word ptr [ebp-8],offset main+80h(00401210)
这句实现了

看看这个地址有什么
main+80h(00401210)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-8 18:34:32 | 显示全部楼层
本帖最后由 haha_91 于 2017-4-8 18:43 编辑
人造人 发表于 2017-4-8 17:51
看看这个地址有什么
main+80h(00401210)


久等了,今天图片上传多了 我就手打成文本好了:
0040120D                mov                dowrd ptr [ebp-18h],1C680062h
0040120F                call                        1CA81276
00401210                bound                 eax,qword  ptr  [eax]                       
00401211                add                        byte   ptr  [eax+1Ch],ch

红色字的就是那个地址的内容  黑字的是它的上下文(不知道有没用)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 18:56:44 | 显示全部楼层
haha_91 发表于 2017-4-8 18:34
久等了,今天图片上传多了 我就手打成文本好了:
0040120D                mov                dowrd ptr [ebp-18h],1C680062h
004 ...

不对吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 19:00:11 | 显示全部楼层
上面和下面没有关系呀

发一下完整的汇编代码

我这边是这样的
     1: #include <stdio.h>
     2: 
     3: int main(void)
     4: {
00834130  push        ebp  
00834131  mov         ebp,esp  
00834133  sub         esp,0CCh  
00834139  push        ebx  
0083413A  push        esi  
0083413B  push        edi  
0083413C  lea         edi,[ebp-0CCh]  
00834142  mov         ecx,33h  
00834147  mov         eax,0CCCCCCCCh  
0083414C  rep stos    dword ptr es:[edi]  
     5:         wchar_t b = 'b';
0083414E  mov         eax,62h  
00834153  mov         word ptr [b],ax  
     6: 
     7:         return 0;
00834157  xor         eax,eax  
     8: }
00834159  pop         edi  
0083415A  pop         esi  
0083415B  pop         ebx  
0083415C  mov         esp,ebp  
0083415E  pop         ebp  
0083415F  ret  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 19:45:35 | 显示全部楼层
本帖最后由 萌新鱼油 于 2017-4-8 19:58 编辑
人造人 发表于 2017-4-8 19:00
上面和下面没有关系呀

发一下完整的汇编代码


专门弄个新号只为发图- -||
无标题3.png

图2是指定地址查看到的代码
因为图1只显示了1句(不知道为什么只显示一句  抓头)

你的汇编代码怎么和我显示的不一样!!!
是和我的软件环境不同么(我用的软件图1已截图,是vc6.0),还是说我查看汇编代码的方式错了?
无标题3.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 20:26:03 | 显示全部楼层
萌新鱼油 发表于 2017-4-8 19:45
专门弄个新号只为发图- -||

查看内存地址 0040102c 的值
用内存窗口

类似于下面这样
你在vc6下看看有没有

无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 20:38:04 | 显示全部楼层
本帖最后由 萌新鱼油 于 2017-4-8 20:39 编辑
人造人 发表于 2017-4-8 20:26
查看内存地址 0040102c 的值
用内存窗口


可以查看,但图片又发不了了  继续手动转文本

内存内容如下
0040102C        62        00        5F        5E        5B        8B        E5
00401033        5D        C3        CC        CC        CC        CC        CC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 20:42:03 | 显示全部楼层
萌新鱼油 发表于 2017-4-8 20:38
可以查看,但图片又发不了了  继续手动转文本

内存内容如下

我认为是vc6反汇编的问题

查看一下内存地址 0401028 的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 20:52:35 | 显示全部楼层
人造人 发表于 2017-4-8 20:42
我认为是vc6反汇编的问题

查看一下内存地址 0401028 的数据

00401028内存查询如下

00401028    66  C7  45  FC  62  00  5F
0040102F    5E  5B   8B  E5  5D  C3  CC  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 21:19:38 | 显示全部楼层
萌新鱼油 发表于 2017-4-8 20:52
00401028内存查询如下

00401028    66  C7  45  FC  62  00  5F

无标题.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 21:33:49 | 显示全部楼层

在没运行到该语句的时候查看内存仍然一样:

00401028    66  C7  45  FC  62  00  5F
0040102F    5E  5B   8B  E5  5D  C3  CC  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 21:38:32 | 显示全部楼层    本楼为最佳答案   
萌新鱼油 发表于 2017-4-8 20:52
00401028内存查询如下

00401028    66  C7  45  FC  62  00  5F

a.asm
[bits 32]

db 0x66, 0xc7, 0x45, 0xfc, 0x62, 0x00, 0x5F, 0x5e, 0x5b, 0x8b, 0xe5, 0x5d, 0xc3, 0xcc

用nasm 编译
nasm a.asm -o a.obj

用ndisasm 反汇编
ndisasm -b 32 a.obj
00000000  66C745FC6200      mov word [ebp-0x4],0x62
00000006  5F                pop edi
00000007  5E                pop esi
00000008  5B                pop ebx
00000009  8BE5              mov esp,ebp
0000000B  5D                pop ebp
0000000C  C3                ret
0000000D  CC                int3

00000000  66C745FC6200      mov word [ebp-0x4],0x62
可以看到是把0x62写到 ebp-0x4 的位置

看来是vc6翻译错了?
mov word ptr [ebp-8],offset main+80h(00401210)

不过现在又发现一个问题,为什么是ebp - 8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 21:42:36 | 显示全部楼层
好吧,图片上是ebp - 4
是我复制错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 21:56:52 | 显示全部楼层
人造人 发表于 2017-4-8 21:42
好吧,图片上是ebp - 4
是我复制错了

额  所以说是VC6.0的翻译错误么?


非常感谢 这个问题困惑好几天了 原来软件汇编代码竟然会翻译错
不光解决了问题  还偷偷发现了个工具  nasm  额外收获  以后看不懂的汇编原来可以根据内存 反出汇编语句
好想加你好友  可是等级太低 权限不够  看来我以后要多多水贴,不对 多多回帖  只为能和大佬做朋友~~!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 22:03:03 | 显示全部楼层
萌新鱼油 发表于 2017-4-8 21:56
额  所以说是VC6.0的翻译错误么?

我也不知道是不是vc6翻译错了,vc6翻译成那样,我看不懂

改用vs2015吧,vs2015好用^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-8 22:50:40 | 显示全部楼层
人造人 发表于 2017-4-8 22:03
我也不知道是不是vc6翻译错了,vc6翻译成那样,我看不懂

改用vs2015吧,vs2015好用^_^

嗯 喜欢用VC是因为它小  vs以前装过1次    安装就用了1个多小时(可能机子太烂),据说VS稍微没装好 系统就有影响  所以有阴影
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 23:02:36 | 显示全部楼层
haha_91 发表于 2017-4-8 22:50
嗯 喜欢用VC是因为它小  vs以前装过1次    安装就用了1个多小时(可能机子太烂),据说VS稍微没装好 系统 ...

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 20:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表