首页
社区
课程
招聘
[旧帖] [求助]一个汇编语句的进制问题,很间单,告诉我一下 0.00雪花
发表于: 2007-12-26 00:54 3141

[旧帖] [求助]一个汇编语句的进制问题,很间单,告诉我一下 0.00雪花

2007-12-26 00:54
3141
00405642    8A06            MOV AL,BYTE PTR DS:[ESI]           
下面窗口显示
DS:[006E9C4D]=30 ('0')  意思是ESI的十六制值为31 换算成ASCII字符为0
AL=00                             AL值为00  这里的AL值也指ASCII字符吗?

00405644    8A4E 01         MOV CL,BYTE PTR DS:[ESI+1] 这里的是1也是十六制是吧?
下面窗口显示
DS:[006E9C4D]=31 ('1')  意思是ESI的十六制值为31 换算成ASCII字符为1
CL=0B                             这里CL的值如果按上面的解释就不成立了,那这里的值到底是个什么进制的呢?或者说是个什么类型的值呢?

00405656    884C24 10       MOV BYTE PTR SS:[ESP+10],CL  这里面的10又不是什么进制?

大哥,回答一下带?号的问题。谢谢了。

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
DS:[006E9C4D]=30 ('0')  意思是ESI的十六制值为31 换算成ASCII字符为0
AL=00                             AL值为00  这里的AL值也指ASCII字符吗?
你在这里看到应该是OD的提示,这里的提示是告诉你当你的OD执行到mov al,byte ptr [esi]这条指令时,[esi]的内存值是[006E9C4D],这个内存保存着的第一个值就是ASCII码的'0',而在这时你只是执行到这条指令的位置,这条指令还没有被执行,所以al的值是未知的,他可能是00,也可能是xx,而当你再用F8走过这条指令时,al应该是等于ASCII码的'0'的,也就是十六进制的0x30。
DS:[006E9C4D]=31 ('1')  意思是ESI的十六制值为31 换算成ASCII字符为1
CL=0B                             这里CL的值如果按上面的解释就不成立了,那这里的值到底是个什么进制的呢?或者说是个什么类型的值呢?
这里和上面的说法是一样的,只是指令取出的ASCII码是[esi+1]处的内存值,也就是内存中的[006E9C4E](因为[esi]==[006E9C4D],所以加1就是006E9C4E)ASCII码中的'1'传给cl,但你看到的这一句和上面一样,指令还没有被执行,所以CL的值是未知,你要知道CL的值,只要再F8走一步就可以看到CL应该是等于ASCII码的'1',也就是十六进制的0x31
00405656    884C24 10       MOV BYTE PTR SS:[ESP+10],CL  这里面的10又不是什么进制?
在OD里,默认显示的整数值都是十六进制的。
2007-12-26 09:07
0
雪    币: 93
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
al 和CL的值既然没有在F8再走一步的时候,都是未知的,可能是00可能是XX  一个显示的是00一个显示的是0B,虽然结果还不知道为什么要显示0B呢?随机的吗? 为什么不未知值有个统一显示的方式呢。?
2007-12-26 16:48
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
eax等寄存器都是程序用来暂时寄存数据的地方,他的数据有没有用要看当前程序对他的使用才知道是不是有用的,所以调试器之类的软件是没办法知道eax等寄存器的值是不是未知还是什么,当然也就没有什么统一显示的方法了。
2007-12-26 17:07
0
游客
登录 | 注册 方可回帖
返回