社区
汇编语言
帖子详情
菜鸟提问:关于EIP
无聊客
2006-07-24 02:13:36
平时不搞汇编,一直忙于应用程序开发,最近代码被人报了有溢出漏洞,看了些文章,大致明白了原理,大致是破坏了EIP,改掉了下次调用的地址,但是有一点不是很明白,EIP的值是何时修改的?从哪里取的?因为我在VS2005下跟了下,发现EIP的值一直在变化,的确指向下一条指令地址,但是它是怎么知道下一条指令的地址的呢?是不是哪个地方有数据结构保存的?
...全文
536
12
打赏
收藏
菜鸟提问:关于EIP
平时不搞汇编,一直忙于应用程序开发,最近代码被人报了有溢出漏洞,看了些文章,大致明白了原理,大致是破坏了EIP,改掉了下次调用的地址,但是有一点不是很明白,EIP的值是何时修改的?从哪里取的?因为我在VS2005下跟了下,发现EIP的值一直在变化,的确指向下一条指令地址,但是它是怎么知道下一条指令的地址的呢?是不是哪个地方有数据结构保存的?
复制链接
扫一扫
分享
转发到动态
举报
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 来处理的,并没有什么数据结构。
常见问题(FAQ)[2008.2更新]
这样,你就对系统底层有一定的了解了。A:不能,WinZip和WinRAR是通过与CRC结合的方式进行加密,它们在解压的时候会不管3721先把带上用户输入的密码的CRC放进解压流程中,先解出来再说,最后才进行原始的CRC判定,如果最后得到的CRC与原来的不一样,那就是解压失败。当然,对于想往更高层次发展的Cracker学一些数论知识是必要的,当然我们不太可能发现某的算法的弱点,但至少可以在,某个高人,发现算法的弱点,并公开时,能看懂人家是如何实现的(这需要涉及很多理论性的东西,会涉及数论的),并能写成代码。
Armadillo CopyMem-ll+Debug-Blocker脱壳过程
Armadillo CopyMem-ll+Debug-Blocker脱壳过程 作者: 飞舞的T恤
菜鸟
手动脱Armadillo CopyMem-ll +Debug-Blocker壳全过程,超详细。。。 【使用工具】 Ollydbg,Loadpe,Imprec1.6F 【脱壳平台】 Win2K 【软件名称】 按键精灵3 V3.11 【加壳方式】 Armadillo 3.00a - 3.6...
TinyWebserver学习笔记&常问问题整理
TinyWebserver学习笔记&常问问题整理
内存屏障机制及内核相关源代码分析
1.--->ymons 在www.linuxforum.netLinux内核技术论坛发贴问:set_current_state和__set_current_state的区别?#define __set_current_state(state_value) /do { current->state = (state_value); } whi...
Qingdao Panda进阶之路
黑客的基本技能 1、黑客的精神态度是很重要的,但技术则更是重要。黑客的态度虽然是无可取代,随著新科技的发明和旧技术的取代,这些工具随时间在慢慢的改变。例如:以往总是会学会用机器码写程序,直到最近我们开始使用HTML。不过,在1996年末,当然,这是基础的hacking技能。在1997年,理所当然的,你必...
汇编语言
21,497
社区成员
41,616
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章