Linuxで struct user_regs_struct を使用してプログラム作ってみたのですが、わからないところがあります。
.#include<sys/user.h>
...
fprintf(stderr, "WROTE : EIP = %08x, %s\n", (int)regs.eip, buf);
...
fprintf()の部分でエラーが出てしまします。
sys/user.hの部分を確認してみたところ、
struct user_regs_struct
{
extension unsigned long long int r15;
extension unsigned long long int r14;
extension unsigned long long int r13;
extension unsigned long long int r12;
extension unsigned long long int rbp;
extension unsigned long long int rbx;
extension unsigned long long int r11;
extension unsigned long long int r10;
extension unsigned long long int r9;
extension unsigned long long int r8;
extension unsigned long long int rax;
extension unsigned long long int rcx;
extension unsigned long long int rdx;
extension unsigned long long int rsi;
extension unsigned long long int rdi;
extension unsigned long long int orig_rax;
extension unsigned long long int rip;
extension unsigned long long int cs;
extension unsigned long long int eflags;
extension unsigned long long int rsp;
extension unsigned long long int ss;
extension unsigned long long int fs_base;
extension unsigned long long int gs_base;
extension unsigned long long int ds;
extension unsigned long long int es;
extension unsigned long long int fs;
extension unsigned long long int gs;
};
.....
struct user_regs_struct
{
long int ebx;
long int ecx;
long int edx;
long int esi;
long int edi;
long int ebp;
long int eax;
long int xds;
long int xes;
long int xfs;
long int xgs;
long int orig_eax;
long int eip;
long int xcs;
long int eflags;
long int esp;
long int xss;
};
上記のようにstruct user_regs_structが2つあるのですが、eipを使用したいので、後者の方を使いたいのですが、デフォルトだとripの方になってしまいます。
どうすればよいでしょうか?
それとなんで同じ名前の構造体を2つも宣言可能なんですか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/10 10:59