问一个汇编问题的题目,看有人会不

新人问一个IDA反汇编的简单问题(IDA是不是把局部变量弄错了?)_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:431,192贴子:
新人问一个IDA反汇编的简单问题(IDA是不是把局部变量弄错了?)收藏
代码是:int f(int a,int b){int i=2;return 0;}
厉害啊!绝对厉害!!!
好奇怪。ebp-8。首先ebp-0CCh到ebp这段栈空间被填充了0CCh。但是ebp-8正好在这段栈空间内。1.这里应该是ebp-42.在这段填充的堆栈里申请局部变量,不怕破坏了这个中断吗?
诶。同样的代码,别人反汇编出来是在ebp-4处放局部变量,但我机器偏食ebp-8处方局部变量。
晕。懂了。别人是留4字节作为int 3,由于我是64位,留了8字节作为int 3。怪不得会有这样的差别。。
IDA读出的机器码显示的是译码错不了,无非是编译器生成DEBUG和RELEASE代码产生差异,生成DEBUG代码自然会在栈中上下边界插入0xCC在执行中方便调试器捕捉到各种越界或者栈溢出情况,C代码最终还是编译器输出为准,要是编译器优化成X86 FASTCALL又是另外结果,第一第二参数会被放入ECX,EDX传入
sizeof(int)
ebp+8是取第一个参数,为什么+8?是因为call会压入4字节的返回地址入栈,再加上压入的ebp,这样里参数刚好8字节。ebp-8取第一个局部变量。是这样的。ebp-4是存放相关寄存器安全信息的。反汇编器会智能判断这个数据类型多大,然后决定预留一定间隙,防止越界破坏其他信息。如果第一个局部变量大小为4字节,那么就存放在ebp-8处。如果第一个局部变量超过4字节,比如需要400字节,那么首先会预留一个ebp-8的空间防止越界,然后在ebp-8的基础上申请400字节,这时在堆栈上的位置是ebp-8-400=ebp-0x198,最后之后的每一个局部变量都会间隔8字节。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或这是个机器人猖狂的时代,请输一下验证码,证明咱是正常人~君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
一级人力资源管理师技能题答案汇编
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口有几道汇编程序题,实在不会写,求大侠帮忙啊?[题型]:单选1.
下列描述错误的是_______。A.LOOP指令以CX为循环控制计数器B. LOOPE指令循环的条件是CX≠0且ZF=0
C. LOOPE指令循环的条件是CX≠0且ZF=1
LOOPNE指令循环的条件是CX≠0且ZF=02.在使用条件转移指令前,不能为条件指令设置标志位,提供跳转依据的指令有_______。A.MOV
TEST3.条件转移指令JZ的测试条件为。A.ZF=0
D.CF=1 4.已知(AX)=a,(BX)=b,a、b均为无符号数,请选择合适的转移指令,使得(AX)不等于(BX)时转L处执行。下面空白处应选用哪条指令。CMP AX,BX_______ LA.
JGE5.控制循环指令LOOP循环次数的寄存器是__________。A.
DX [题型]:多选1.为使CX = -1时,转至标号MINUS处运行,编制了一指令序列,其中正确的是_________A. INC CX JZ MINUS
B. SUB CX,0FFFFH
JZ MINUSC. AND CX,0FFFFH
JZ MINUSD. XOR CX,0FFFFH
JZ MINUS[题型]:简答1.指出如下程序段的功能STRING DB 100 DUP(?)┇MOV AX,SEG STRING
LEA SI,STRING
MOV CX,100LAB:
MOV AL,[SI]
CMP AL,’a’
CMP AL,’z’
SUB AL,’a’ – ‘A’
MOV [SI], ALLAB1: INC SI
LOOP LAB┇[题型]:单选1.
用CALL指令调用子程序时,从子程序返回到主程序_______。A.用JMP指令B.只能用RET指令C.可以用IRET指令D.既可用RET又可用JMP指令2.在子程序调用过程中,断点指的是_______。A.
CALL指令本身的地址B.
CALL的下一条指令的地址C. 子程序的入口地址D. 子程序返回指令RET所在的地址 [题型]:多选1.主程序和子程序之间传递参数的方法包括_________。A. 约定单元法B. 寄存器法C. 形式参数和实际参数法D. 堆栈法2.对于子程序调用的现场保护,下列说法正确的是_________A.必须在子程序中完成B.注意寄存器进栈保护和出栈恢复的顺序是相反的C.出口参数一定要保护D.入口参数可以保护,也可以不保护[题型]:简答1.堆栈在子程序设计中非常重要,试阐述其三项作用。
1b 2a 3c 4c 5c 多选abd
简答:作用是将字符串STRING中所有的小写字母转换成大写字母单选1b 2b 多选 1abd 2bcd 简答:一,现场保护 二,参数传递 三,临时变量
为您推荐:
扫描下载二维码

我要回帖

更多关于 汇编问题 的文章

 

随机推荐