Android 逆向代码调试器开发 ( ptrace 函数 | 读寄存器 | 写寄存器 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 逆向代码调试器开发 ( ptrace 函数 | 读寄存器 | 写寄存器 )相关的知识,希望对你有一定的参考价值。





一、读寄存器



调用

ptrace(PTRACE_GETREGS, m_nPid, NULL, regs)

读取进程运行时的寄存器 ;

读取寄存器时 , 进程必须处于 WUNTRACED 状态 , 否则就会出错 ;

参数一设置为 PTRACE_GETREGS , 代表本次操作是读取寄存器值 ;


完整代码 :

int CPtrace::getRegister(REGS* regs)
{
	if (ptrace(PTRACE_GETREGS, m_nPid, NULL, regs) < 0) {
		LOGE("PTRACE_GETREGS failed pid %d", m_nPid);
		return PTERR_GETREG_FAILED;
	}

	return PTERR_SUCCESS;
}




二、写寄存器



调用

ptrace(PTRACE_SETREGS, m_nPid, NULL, regs)

向进程运行时的寄存器写入值 ;

写寄存器时 , 进程必须处于 WUNTRACED 状态 , 否则就会出错 ;

参数一设置为 PTRACE_SETREGS, 代表本次操作是向寄存器写入值 ;


int CPtrace::setRegister(const REGS* regs)
{
	if (ptrace(PTRACE_SETREGS, m_nPid, NULL, regs) < 0) {
		LOGE("set reg failed %d", m_nPid);
		return PTERR_SETREG_FAILED;
	}

	return PTERR_SUCCESS;
}

以上是关于Android 逆向代码调试器开发 ( ptrace 函数 | 读寄存器 | 写寄存器 )的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向代码调试器开发 ( ptrace 函数 | 读取进程内存数据 )

Android 逆向代码调试器开发 ( ptrace 函数 | 向进程内存写出数据 )

Android 逆向代码调试器开发 ( ptrace 函数 | 读寄存器 | 写寄存器 )

Android 逆向代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )

Android 逆向代码调试器开发 ( 代码调试器功能简介 | 设置断点 | 读写内存 | 读写寄存器 | 恢复运行 | Attach 进程 )

Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )