【发布时间】:2012-04-11 10:26:04
【问题描述】:
我正在做一个家庭作业,我们要利用一个易受缓冲区溢出影响的程序。我们通过创建一个大的char 数组来实现这一点,并首先完全填充它而不使用任何操作指令。
我相信我应该做的是将恶意代码复制到缓冲区的某个位置(这部分我可以做得很好),然后以某种方式修改可利用函数的返回地址,使其指向恶意代码所在的位置.
我知道我想设置的地址(比如说½¾¿º),但我收到了一些警告,但我不知道它们是由什么引起的。
这是(本质上)导致警告的代码:
int start_of_return_address = 10;
chars[start_of_return_address + 0] = '½';
chars[start_of_return_address + 1] = '¾';
chars[start_of_return_address + 2] = '¿';
chars[start_of_return_address + 3] = 'º';
我收到的每个作业的警告是:
warning: overflow in implicit constant conversion
warning: multi-character character constant
我通过将bdbebfba(恶意代码地址)转换为字符(产生½¾¿º)得到地址。
关于什么可能导致警告的任何想法,或者我可以将地址复制到字符数组中的其他方式?
请记住,这是家庭作业。
【问题讨论】:
-
您是如何将
bdbebfba转换为“字符”的?
标签: c arrays character-encoding char