2016-05-04 10 views
1

osxinjプロジェクトを使用して、オープン、リード、ライト、lstatなどのシステムコールをフックしました。リンゴによって提供されるTextEditアプリケーションにこれを注入し、すべて正常に動作しました。 texteditを使用して新しいファイルを開いたときに、opencallbackが呼び出され、メッセージがsystem.logファイルに記録されました。マッハインジェクション:Excelでの注入時にシステムコールのオープンが挿入されない

エクセルに注入
typedef int (*open_type)(const char *, int, mode_t); 
open_type open_func = 0; 
int opencallback(const char* path, int oflag, mode_t mode) 
{ 
    syslog(LOG_ALERT, "In open..."); 

    int returnVal = open_func(path, oflag, mode); 
    syslog(LOG_ALERT,"Open, ends\n"); 
    return returnVal; 
} 

とコードの下に使用したオープンシステムコールを上書きしようとした:テキストエディットに注入する際

void* func_ptr = dlsym(RTLD_NEXT, "open"); 
if (func_ptr) 
{ 
    open_func = (open_type)func_ptr; 
    mach_error_t me = mach_override_ptr(func_ptr, 
          (void*)&opencallback, 
          (void**)&open_func); 
} 

opencallbackが呼び出されますが、Microsoft Excelで注射した場合、それは呼び出さ取得されていません。しかし、他のシステムコールread、write、lstatのために同じ行に書かれたコードは、Excelに挿入されたときに挿入されます。

Excelに注入したときにオープンが挿入されない理由についての考えはありません。

答えて

0

最後に、コードを実行しています。それが誰かを助けるかもしれないことを望む答えを投稿しています。 openのエイリアスである__openをフックし、Excelのようなi386アプリケーションで問題なく動作しました。

関連する問題