我写它采用PTRACE并执行以下程序:strace如何读取系统调用sys_open的文件名?
- 它读取当前的EAX并检查系统调用SYS_OPEN。
- 如果是,那么我需要知道传递的参数是什么。
INT SYS_OPEN(为const char *文件名,const int的模式,const int的面罩)
所以EAX = 5意味着它是一个开放的系统调用
我才知道EBX有从这个文件位置的地址Question 但是,我如何知道文件名的长度,以便我可以读取该位置的内容?
我碰到哪个地址相同
Question 1
Question 2以下问题(这只是一个是我的!)
但我仍然没有得到解决我的问题。 :(因为这两个答案是不明确的。 我仍然得到分段错误,当我尝试在问题-1
的方法,你可以检查我的代码here
所以现在我真的不知道怎么做strace的提取这些值如此精美:(
如果您愿意深入一些代码,您可以在http://strace.git.sourceforge.net/git/gitweb.cgi?p=strace/strace;a=tree自己查看 - grep'sys_open'可能是一个好的开始。 – che 2012-03-21 06:16:13
您是否仔细研究过'strace'的源代码?你有没有试过'strace strace true'? – 2012-03-21 06:16:41
我在编译代码时遇到一些编译错误。 http://ideone.com/SQie4。我想你也需要粘贴'helper.h'的代码 – 2012-03-21 06:16:42