КП
typedef()
что бы потом можно было объявить такую функцию в которую можно передать сколько хочешь аргуентов и компилятор не будет крыть матом?Size: a a a
КП
typedef()
что бы потом можно было объявить такую функцию в которую можно передать сколько хочешь аргуентов и компилятор не будет крыть матом?КП
КП
DA
КП
typedef asmlinkage u_int64_t volatile (*func)(void *, ...);
int my_init(void) {
func1 lookup = (void *)0xCafeBabeD0A7Bead;
func printk = NULL;
if ( (u_int16_t)((u_int64_t)lookup >> 48) != 0xffff )
return -228;
printk = lookup("printk");
if ( !printk )
return -229;
printk("R3fl3ct1v3 w0rld %#llx\n", printk);
}
new *(u_int64_t *)kallsyms_lookup_name = 0xffffffff96f61860
Try to inject with finit_module syscall
finit_module(); ret = -1; errno = 8
finit_syscall return errno 8... fallback to init_modulemodule_layout not found, try as is
[ 33.855389] driver: loading out-of-tree module taints kernel.
[ 33.855992] driver: module license 'unspecified' taints kernel.
[ 33.856609] Disabling lock debugging due to kernel taint
[ 33.857171] driver: module verification failed: signature and/or required key missing - tainting kernel
[ 33.859638] R3fl3ct1v3 w0rld
КП
КП
КП
КП
y
КП
VR
objcopy -R .gnu_debuglink ./data/libc-2.23.so ⇒ удалить запись об отладочных символах из либы
mv ./data/data/libc-2.23.so ./data/libc-2.23.so.debug ⇒ копируем файл отладочных символов от библиотеки соответствующей версии в папку с кастомной библиотекой.
objcopy --add-gnu-debuglink=libc-2.23.so.debug ./libc-2.23.so ⇒ пишем в сегмет отладочных символов ссылку на файл где отладочные символы
patchelf --set-interpreter ld-2.23.so ./binary ⇒ патчим эльф на новый либц
patchelf --replace-needed libc.so.6 `pwd`/libc-2.23.so ./binary
LD_PRELOAD=./libc-2.31.so ./crap ⇒ запускаемся с новым либц
set exec-wrapper env 'LD_PRELOAD=./libc-2.31.so' ⇒ запускаемся с новым либц под дебаггером
КП
КП
КП
КП
КП
pl
VR