请高手帮小弟我分析一下这段代码
请高手帮我分析一下这段代码
#include <stdio.h>
void AA(void)
{
printf( "Oh my God, Dangerous!\n ");
}
void ChangeReturn(int i)
{
printf( "%d\n ",i);
__asm
{
lea edi, [esp+34h*4]
mov ecx, [edi]
mov [edi+4], ecx
lea esi, AA
mov [edi], esi
}
}
int main()
{
ChangeReturn(100);
printf( "return to Main\n ");
__asm
{
sub esp,4
}
return 0;
}
编译环境是vc++2005,输出什么啊?为什么?
谢谢!
------解决方案--------------------
hacker行为,如非特殊用途,不要花精力研究。
------解决方案--------------------
修改函数的返回地址而已
------解决方案--------------------
那你得到的东西就不是真正想要的东西了,那你知道这后果是什么了吧?
------解决方案--------------------
修改函数返回地址就可以执行任意指定地址上的代码
利用缓冲区溢出漏洞执行shellcode的一种常规手法
#include <stdio.h>
void AA(void)
{
printf( "Oh my God, Dangerous!\n ");
}
void ChangeReturn(int i)
{
printf( "%d\n ",i);
__asm
{
lea edi, [esp+34h*4]
mov ecx, [edi]
mov [edi+4], ecx
lea esi, AA
mov [edi], esi
}
}
int main()
{
ChangeReturn(100);
printf( "return to Main\n ");
__asm
{
sub esp,4
}
return 0;
}
编译环境是vc++2005,输出什么啊?为什么?
谢谢!
------解决方案--------------------
hacker行为,如非特殊用途,不要花精力研究。
------解决方案--------------------
修改函数的返回地址而已
------解决方案--------------------
那你得到的东西就不是真正想要的东西了,那你知道这后果是什么了吧?
------解决方案--------------------
修改函数返回地址就可以执行任意指定地址上的代码
利用缓冲区溢出漏洞执行shellcode的一种常规手法