首页
社区
课程
招聘
[求助]OD调试过程中,把一些指令改为了待读写的字符串,却被截断了,不知为什么
发表于: 2017-4-6 12:13 4281

[求助]OD调试过程中,把一些指令改为了待读写的字符串,却被截断了,不知为什么

2017-4-6 12:13
4281

      就是执行到断点时,把一段指令改为了即将要被读写的字符串(这段指令原文还未被执行,而且是还要再执行不少指令才执行到这里)。我待程序断在断点时,把这段指令改为了即将要被读的字符串,但是到了要读的时候就发生了截断,上张图


 


截图的时候edi和esp均是“user32.dll”的字符串地址,但是上面显示的就发生了截断。但是从下面的内存窗口看应该是不会这样来截断的.......


会不会这个位置原来是被认为是指令的原因?不过我选择在这里改是因为紧接着上面的shellcode。我是用vc 2010写了一段不包含要读的字符串的shellcode的,然后在OD中调试时把要读的字符串放在紧接着shellcode后面,并改一下shellcode中原本用"0xaa aa aa aa"填充着的字符串地址。但是这样就发生截断,这样执行当前指令(call LoadLibraryW)之后,返回值(EAX)是0,应该就是因为这样所以返回0。想不明白怎么回事,希望指点一下下





[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 30
活跃值: (216)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
中午又看了一下《0day》后,我现在改用把要读的字符串压栈再push  esp的方式来在shellcode里放字符串的方式。但是上面这种为什么字符串会被截断了呢?还是想知道。
2017-4-6 13:57
0
雪    币: 1140
活跃值: (4217)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
3
显示问题吧      不用管了
2017-4-6 14:15
0
雪    币: 30
活跃值: (216)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我上面这里调用LoadLibraryW,确实用ascii字符,这里有问题,这点我也是之后的调试才意识到。上面这里,LoadLibraryW返回值是null,但是考虑到字符问题,这里不能说明问题。但是这个地方截断,是不是真的截断了,现在我的程序改好了,也不想重新改成这样了。不过这里真的很奇怪
2017-4-6 18:46
0
雪    币: 775
活跃值: (3420)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
5
看图片里,内存是没有被截断的。寄存器那里就像二楼说的,可能只是显示的时候出了问题。作为开发者,直接看内存啊,应该心里有数的
2017-4-7 09:40
0
游客
登录 | 注册 方可回帖
返回
//