2017-06-06 6 views
4

リモートマシンドライバ(kext)をkdpでデバッグするときに、ユーザスペースアドレスをlldbから読みたいと思います。私は、ユーザーメモリを読み取るしようとしたときのコードで、私が期待して、スペースをカーネルと簡単にそれを読むためにコードを移動するために、copyinを使用することができることを知って、直接それが失敗しました:kextのデバッグ時にユーザスペースのアドレスアドレスを読み取る

(lldb) memory read 0x000070000d15a024 
error: kdp read memory failed (error 4) 

は、いくつかの代替があります実行時にデバッグセッション中にcopyinにデータを変換すると、デバッガからデータを読み取ることができますか?あなたが使用して特定のカーネルのデバッグスクリプトをロードすると仮定すると、

おかげ

答えて

1

は、(適切なKDKにする必要があります)、あなたはprintuserdataコマンドを持っています。

これはその説明である:

printuserdata: 
    Read userspace data for given task and print based on format provided. 
    Syntax: (lldb) printuserdata <task_t> <uspace_address> <format_specifier> 
    params: 
     <task_t> : pointer to task 
     <uspace_address> : address to user space memory 
     <format_specifier> : String representation for processing the data and printing it. 
          e.g Q -> unsigned long long, q -> long long, I -> unsigned int, i -> int 
          10i -> 10 ints, 20s -> 20 character string, s -> null terminated string 
          See: https://docs.python.org/2/library/struct.html#format-characters 
    options: 
     -X : print all values in hex. 
     -O <file path>: Save data to file 

例呼び出し:

(lldb) printuserdata 0xffffff8013257d80 0x00007fff941f5000 10c 
関連する問題