GetFullPathName aus CreateFile-system call Argument
-
Den Teil wo du Hookst kann ich immer noch nicht sehen...
Aber so wie ich das jetzt verstehe Hookst du die NtCreateFile. Wieso Hookst du dann die und nicht
die CreateFileA bzw. CreateFileW?
-
coder777 schrieb:
Hat da jemand eine Erklärung resp. einen Lösungsansatz?
Das sieht so aus, als würde die abschließende '\0' fehlen.
dito
-
D!nk schrieb:
coder777 schrieb:
Hat da jemand eine Erklärung resp. einen Lösungsansatz?
Das sieht so aus, als würde die abschließende '\0' fehlen.
dito
Sein Problem ist nicht, dass zu viel angezeigt wird, sondern zu wenig Information.
-
Das hooking geschieht hier:
//// Syscall logging PIN_AddSyscallEntryFunction(&SysCalls::syscall_entry, &sc);
und im syscall_entry Funktion wird der so abgefangen:
ADDRINT syscall_number = PIN_GetSyscallNumber(ctx, std); syscall_t *sc = &((syscall_t *) v)[thread_id]; sc->syscall_number = syscall_number;
MrL schrieb:
Den Teil wo du Hookst kann ich immer noch nicht sehen...
Aber so wie ich das jetzt verstehe Hookst du die NtCreateFile. Wieso Hookst du dann die und nicht
die CreateFileA bzw. CreateFileW?hmm, dazu kann ich die System call Nummer nicht finden, wüsstest du gerade wo ich die her bekomme?
NtCreateFile habe ich z.B. von hier: http://m.blog.csdn.net/blog/zzz822163/5516879
-
Ich kenne mich mit PIN nicht aus, deshalb weiß ich nicht was da im Rahmen der Möglichkeiten liegt.
Aber versuch das hier mal:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366789(v=vs.85).aspx
-
Das habe ich folgendermassen versucht (wie im Beispiel auf https://msdn.microsoft.com/en-us/library/windows/desktop/aa364962%28v=vs.85%29.aspx:
WINDOWS::HANDLE hFile = (WINDOWS::HANDLE) PIN_GetSyscallArgument(ctx,std,0); WINDOWS::TCHAR Path[BUFSIZE]; dwRet = WINDOWS::GetFinalPathNameByHandle( hFile, Path, BUFSIZE, VOLUME_NAME_NT ); logStream << cPid << " : " << thread_id << " : " << "INJECTION" << " : " << "NtCreateFile" << " : " << (Path) ; Logger::instance()->logSysEntry(logStream.str());
leider erscheint dann im log für 'Path' gar nichts. Oder parse ich das irgendwie falsch?
-
mach mal WCHAR anstelle von TCHAR
-
Bzw benutze GetFinalPathNameByHandleA.
-
MrL schrieb:
Bzw benutze GetFinalPathNameByHandleA.
Führt leider zum selben Ergebnis => leerer (zumindest dargestellter) String
-
So, Problem ist gelöst. Es war mein Fehler, das passiert wenn man nicht weiss wie genau die Funktionsdoku aufgebaut ist Das war ja kein In Argument das Handle, sondern der Return Wert. Da musste ich anders Hooken, und das return argument abfangen.
Danke für die Hilfe!
Gruess