haha_91 发表于 2017-4-8 16:48:20

关于vc6。0 一个mov语句的问题


放在内存的是偏移地址,为什么结果是将符号b赋值给了变量

人造人 发表于 2017-4-8 17:09:08

不明白你想问什么

haha_91 发表于 2017-4-8 17:21:38

人造人 发表于 2017-4-8 17:09
不明白你想问什么

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

我对这句的理解是 仅仅将一个偏移地址赋给了变量b

人造人 发表于 2017-4-8 17:51:55

haha_91 发表于 2017-4-8 17:21
就是请问下为什么
mov word ptr ,offset main+80h(00401210)
这句实现了


看看这个地址有什么
main+80h(00401210)

haha_91 发表于 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 ,1C680062h
0040120F                call                        1CA81276
00401210                bound                 eax,qwordptr                       
00401211                add                        byte   ptr,ch

红色字的就是那个地址的内容黑字的是它的上下文(不知道有没用)

人造人 发表于 2017-4-8 18:56:44

haha_91 发表于 2017-4-8 18:34
久等了,今天图片上传多了 我就手打成文本好了:
0040120D                mov                dowrd ptr ,1C680062h
004 ...

不对吧?

人造人 发表于 2017-4-8 19:00:11

上面和下面没有关系呀

发一下完整的汇编代码

我这边是这样的
   1: #include <stdio.h>
   2:
   3: int main(void)
   4: {
00834130push      ebp
00834131mov         ebp,esp
00834133sub         esp,0CCh
00834139push      ebx
0083413Apush      esi
0083413Bpush      edi
0083413Clea         edi,
00834142mov         ecx,33h
00834147mov         eax,0CCCCCCCCh
0083414Crep stos    dword ptr es:
   5:         wchar_t b = 'b';
0083414Emov         eax,62h
00834153mov         word ptr ,ax
   6:
   7:         return 0;
00834157xor         eax,eax
   8: }
00834159pop         edi
0083415Apop         esi
0083415Bpop         ebx
0083415Cmov         esp,ebp
0083415Epop         ebp
0083415Fret

萌新鱼油 发表于 2017-4-8 19:45:35

本帖最后由 萌新鱼油 于 2017-4-8 19:58 编辑

人造人 发表于 2017-4-8 19:00
上面和下面没有关系呀

发一下完整的汇编代码


专门弄个新号只为发图- -||


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

你的汇编代码怎么和我显示的不一样!!!
是和我的软件环境不同么(我用的软件图1已截图,是vc6.0),还是说我查看汇编代码的方式错了?

人造人 发表于 2017-4-8 20:26:03

萌新鱼油 发表于 2017-4-8 19:45
专门弄个新号只为发图- -||




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

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

萌新鱼油 发表于 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

人造人 发表于 2017-4-8 20:42:03

萌新鱼油 发表于 2017-4-8 20:38
可以查看,但图片又发不了了继续手动转文本

内存内容如下


我认为是vc6反汇编的问题

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

萌新鱼油 发表于 2017-4-8 20:52:35

人造人 发表于 2017-4-8 20:42
我认为是vc6反汇编的问题

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

00401028内存查询如下

00401028    66C745FC62005F
0040102F    5E5B   8BE55DC3CC

人造人 发表于 2017-4-8 21:19:38

萌新鱼油 发表于 2017-4-8 20:52
00401028内存查询如下

00401028    66C745FC62005F


萌新鱼油 发表于 2017-4-8 21:33:49

人造人 发表于 2017-4-8 21:19


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

00401028    66C745FC62005F
0040102F    5E5B   8BE55DC3CC

人造人 发表于 2017-4-8 21:38:32

萌新鱼油 发表于 2017-4-8 20:52
00401028内存查询如下

00401028    66C745FC62005F


a.asm


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
0000000066C745FC6200      mov word ,0x62
000000065F                pop edi
000000075E                pop esi
000000085B                pop ebx
000000098BE5            mov esp,ebp
0000000B5D                pop ebp
0000000CC3                ret
0000000DCC                int3

0000000066C745FC6200      mov word ,0x62
可以看到是把0x62写到 ebp-0x4 的位置

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

不过现在又发现一个问题,为什么是ebp - 8

人造人 发表于 2017-4-8 21:42:36

好吧,图片上是ebp - 4
是我复制错了

萌新鱼油 发表于 2017-4-8 21:56:52

人造人 发表于 2017-4-8 21:42
好吧,图片上是ebp - 4
是我复制错了

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


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

人造人 发表于 2017-4-8 22:03:03

萌新鱼油 发表于 2017-4-8 21:56
额所以说是VC6.0的翻译错误么?




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

改用vs2015吧,vs2015好用^_^

haha_91 发表于 2017-4-8 22:50:40

人造人 发表于 2017-4-8 22:03
我也不知道是不是vc6翻译错了,vc6翻译成那样,我看不懂

改用vs2015吧,vs2015好用^_^

嗯 喜欢用VC是因为它小vs以前装过1次    安装就用了1个多小时(可能机子太烂),据说VS稍微没装好 系统就有影响所以有阴影

人造人 发表于 2017-4-8 23:02:36

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

页: [1]
查看完整版本: 关于vc6。0 一个mov语句的问题