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に注入したときにオープンが挿入されない理由についての考えはありません。