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