2017-10-24 14 views
2

私はPINを初めて使うので、簡単な説明があります。私は、WindowsでのPINの返品に関するルーチンアドレスに困惑しています。私は私のポイントを説明するための最小のテストプログラムを作成しました。Intel PINルーチンの検索:LinuxとWindowsの比較

私は現在PIN 2.14を使用しています。私が調べたアプリケーションは、Windows上で無効になっているASLRを持つDebugビルドです。

まず空のメソッドを呼び出し、メソッドのアドレスを出力し、このシンプルなアプリケーションを検討:

#include "stdio.h" 
class Test { 
public: 
    void method() {} 
}; 
void main() { 
    Test t; 
    t.method(); 
    printf("Test::method = 0x%p\n", &Test::method); 
} 

次ピンツールプログラムのメインルーチンを分解し、テストのアドレスを出力します::方法:

push rbp 
mov rbp, rsp 
push r13 
push r12 
push rbx 
sub rsp, 0x18 
lea rax, ptr [rbp-0x21] 
mov rdi, rax 
call 0x400820 
mov r12d, 0x400820 
mov r13d, 0x0 
mov rcx, r12 
mov rbx, r13 
mov rax, r12 
mov rdx, r13 
mov rax, rdx 
mov rsi, rcx 
mov rdx, rax 
mov edi, 0x4008b4 
mov eax, 0x0 
call 0x4006a0 
mov eax, 0x0 
add rsp, 0x18 
pop rbx 
pop r12 
pop r13 
pop rbp 
ret 
_ZN4Test6methodEv detected by PIN resides at 0x0x400820. 
Test::method = 0x0x400820 
:​​

のUbuntu 14.04.3 x64のVMプリント上のテストアプリケーションに対してこのPINツールを実行します

呼び出しターゲットt.method()、およびPINによって取得された関数アドレスとアプリケーションの出力は、Test ::メソッドがアドレス0x0x400820に存在することを示します。

私のWindows 10のx64マシン上の出力は次のようになります。

push rdi 
sub rsp, 0x40 
mov rdi, rsp 
mov ecx, 0x10 
mov eax, 0xcccccccc 
rep stosd dword ptr [rdi] 
lea rcx, ptr [rsp+0x24] 
call 0x14000104b 
lea rdx, ptr [rip-0x2b] 
lea rcx, ptr [rip+0x74ca3] 
call 0x1400013f0 
xor eax, eax 
mov edi, eax 
mov rcx, rsp 
lea rdx, ptr [rip+0x74cf0] 
call 0x1400015f0 
mov eax, edi 
add rsp, 0x40 
pop rdi 
ret 
Test::method detected by PIN resides at 0x0000000140001120. 
Test::method = 0x000000014000104B 

解体中のアプリケーションの出力やコール・ターゲットが同じ値を示しています。ただし、PINによって返されるルーチンアドレスは異なります。
私はこの動作について非常に困惑しています。これを説明する方法はありますか?

ありがとうございました!それは両方の関数ポインタ、呼び出しの対象だけでなく、PINによって返されたルーチンのアドレスが有効であったとメソッドを呼び出すことになったことが明らかになったしばらくのプロービング後

答えて

1

は自分のために私の質問に答えます。

私は私の呼び出し対象のアドレスのメモリ内diassemblyを見終わったと案の定、それはこのようなものに見えた:つまり

0000000140001122 E9 D2 00 00 00  jmp   Test::method (014000104Bh) 

:PINは一見のにジャンプして、元のメソッドを置き換えを自分のバージョンのコード。これを知って、元の関数ポインタとPINルーチンアドレスを再び関連付けることが可能になりました。

関連する問題