无法 Injection:Try 写入受保护的 RAM 区域
Failure Injection:Try to write into protected RAM area
我正在做一个家庭项目,以了解有关嵌入式系统的更多信息。所以我对C语言也不专业:)
假设我有一个结构:
static st_struct myStruct;
结构定义为:
typedef struct
{
int a;
long xy;
} st_struct
这里为了保持代码简单,结构被定义并且仅在受保护的 RAM 区域内有效,地址 space 从 0x04001000 - 0x04003000。
这个保护区防止其他任务写入它,它们只能读取。
如果某些 task/function 试图修改或写入此区域,CPU 将重置。
变量 myStruct 位于地址 0x04001f15 内。
我想挑起这种尝试写入 "not allowed" 的行为,完全写入 myStruct 变量。在此示例中实现此类故障注入的最佳方法是什么?你能举例说明如何用指针算术来做到这一点吗?
据我了解,您需要 other 应用程序的代码,因此会产生错误行为。
在另一个process/program中这样做
typedef struct
{
int a;
long xy;
} st_struct;
st_struct *ms = (st_struct*) 0x04001f15;
ms->a = 0;
ms->xy = 0;
这样其他应用程序将尝试访问相同的结构并会出错。
我正在做一个家庭项目,以了解有关嵌入式系统的更多信息。所以我对C语言也不专业:)
假设我有一个结构:
static st_struct myStruct;
结构定义为:
typedef struct
{
int a;
long xy;
} st_struct
这里为了保持代码简单,结构被定义并且仅在受保护的 RAM 区域内有效,地址 space 从 0x04001000 - 0x04003000。 这个保护区防止其他任务写入它,它们只能读取。
如果某些 task/function 试图修改或写入此区域,CPU 将重置。
变量 myStruct 位于地址 0x04001f15 内。
我想挑起这种尝试写入 "not allowed" 的行为,完全写入 myStruct 变量。在此示例中实现此类故障注入的最佳方法是什么?你能举例说明如何用指针算术来做到这一点吗?
据我了解,您需要 other 应用程序的代码,因此会产生错误行为。
在另一个process/program中这样做
typedef struct
{
int a;
long xy;
} st_struct;
st_struct *ms = (st_struct*) 0x04001f15;
ms->a = 0;
ms->xy = 0;
这样其他应用程序将尝试访问相同的结构并会出错。