Posts mit dem Label DTrace werden angezeigt. Alle Posts anzeigen
Posts mit dem Label DTrace werden angezeigt. Alle Posts anzeigen

Mittwoch, 10. August 2011

exec() umbiegen mit dtrace

Um unliebsame Programmaufrufe zu verhindern, ohne an den Programmen selber Modifikationen vornehmen zu müssen eignet sich auch dtrace.

(607) oldn90700:/home/olbohlen$ cat foobar.ksh
#!/bin/ksh
echo true
(608) oldn90700:/home/olbohlen$ ./foobar.ksh
August 10, 2011 03:02:18 PM CEST

Wie geht das?

Man schaltet für DTrace den destructive mode ein und fängt mittels syscall provider die exec* syscalls ab zum entry Zeitpunkt. Dann modifiziert man arg0 für den exec() und das wars dann auch schon:

(717) oldn90700:/root# cat preve*
#!/usr/sbin/dtrace -s
#pragma D option destructive

syscall::exec*:entry
/copyinstr(arg0) == "./foobar.ksh" /
{
   printf("exec arg0: %s\n", copyinstr(arg0));
   copyout("/usr/bin/date", arg0, 14);
}

Sehr spannend was DTrace alles kann :)