菜鸟提问:关于EIP

无聊客 2006-07-24 02:13:36
平时不搞汇编,一直忙于应用程序开发,最近代码被人报了有溢出漏洞,看了些文章,大致明白了原理,大致是破坏了EIP,改掉了下次调用的地址,但是有一点不是很明白,EIP的值是何时修改的?从哪里取的?因为我在VS2005下跟了下,发现EIP的值一直在变化,的确指向下一条指令地址,但是它是怎么知道下一条指令的地址的呢?是不是哪个地方有数据结构保存的?
...全文
536 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jedimaster 2006-08-18
  • 打赏
  • 举报
回复
堆栈溢出 覆盖了返回的函数地址 把返回地址改成了自己的恶意函数地址
feeboby 2006-08-18
  • 打赏
  • 举报
回复
简单学一下汇编就知道了
无聊客 2006-08-18
  • 打赏
  • 举报
回复
这都不知道,你还搞“应用开发”,我呸!
================================================
我是来问问题的,不想和你吵,一边待着去。。。。。
suncheng_hong 2006-08-18
  • 打赏
  • 举报
回复
基础很重要哟
mark72 2006-08-07
  • 打赏
  • 举报
回复
大多数都是你的堆栈溢出了
naniandeyu 2006-08-07
  • 打赏
  • 举报
回复
完全正确,因为指令的长度不一,ip指向下条指令自然加的数字也就不同,上面说加一,是简单的说法。
ckp 2006-08-07
  • 打赏
  • 举报
回复
EIP-指令指针寄存器;
EIP不由指令控制,是通过CPU中的程序计数器来实现指向下一条指令。
程序计算器不是每次加1,而是根据当前即将执行的指令计算出增加的数值。
nicememory 2006-07-26
  • 打赏
  • 举报
回复
数组越界,不安全函数调用
fycom200 2006-07-26
  • 打赏
  • 举报
回复
晕菜!
EIP是自动加的,也有指令控制的,如(JMP,RET,JZ......等等),如果没有执行这些指令EIP就自动加1顺序执行程序. 我的理解就是这样的
pzt2004 2006-07-25
  • 打赏
  • 举报
回复
这都不知道,你还搞“应用开发”,我呸!
naniandeyu 2006-07-24
  • 打赏
  • 举报
回复
1。“平时不搞汇编,一直忙于应用程序开发”
回复:你的逻辑是汇编就不能开发“应用程序”,或者是怕别人说自己无知,潜台词是告诉别人,我也是内行人,也编程。别怕,做学问搞研究就要不耻下问,因为谁都不是生而知之,问问题不丢人,就算Richard stallman(gnu之父)也会不停的问别人技术方面的问题,因为谁都可能知道别人不知道的东西。问问题丢人,这是东方人特有的奇怪的虚荣心在作祟!

2。"因为我在VS2005下跟了下,发现EIP的值一直在变化,的确指向下一条指令地址,但是它是怎么知道下一条指令的地址的呢?"

回复:
ip,eip,是指令指针。指令的物理地址是cs的影子寄存器里的基址 + ip(或 eip)的值。cup不停的向cs的影子寄存器和ip这对组合要指令的地址,而ip通过内部机制(自加器)不断的加一,使自己指向下条指令,这样程序才能自动的一条一条的往下执行,不然计算机就成计算器了。这是机器的基本机理,与数据结构无关,如果它不变,那才是怪事。改变ip也很容易,jmp、call、int等这些需要转向的指令都是通过修改ip来实现的。
大熊猫侯佩 2006-07-24
  • 打赏
  • 举报
回复
这是由 cpu 来处理的,并没有什么数据结构。

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧