2016-11-22 7 views
0

私はcharバッファが関数内のスタックに割り当てられていることに気付きました。それはこのように書きます: IDAのスタック変数の内容を読むにはどうすればよいですか?

.text:00401xxx Buffer= byte ptr -24h 

は私が行くことによってメモリアドレスにDワードを読み取ることができることを知っている。しかし、

Dword(0x<address>) 

、私はスタック変数について同じことを行うのですか?特にここでは、文字バッファ全体を読むことができるようにしたいと考えています。

答えて

0

ゆーはIDAモジュールidcを使用することができます。

あなたが印刷DWORDをしたい場合は、これは正しいです:

**GetManyBytes(ea, size, use_dbg=False)<br>** 
Parameters: 
     ea - linear address 
     size - size of buffer in normal 8-bit bytes 
     use_dbg - if True, use debugger memory, otherwise just the database 

例:

GetManyBytes(0x<address>, 50, True) 


Dword(0x<address>)

メモリダンプのためにあなたの上に示唆としては、以下の機能を使用することができます関数ランタイムを呼び出すことができます。

のような単純なスクリプトも使用できます。
from idc import GetManyBytes 
from struct import unpack 

def simple_dump(): 
    arr = [] 
    for i in xrange(0, 2*SIZE_TO_DUMP, 2): 
     bytes = GetManyBytes(0x<address>+i,2) 
     arr.append(unpack("h", bytes)[0]) 
    return arr 

def main(): 
    values = simple_dump() 

IDA 16進表示ウィンドウを使用することもできます