Я знаю, LD_PRELOAD
трюк может быть использован для перехвата функций libc.
Возьмите это как пример. Я могу успешно зацепить strstr
с LD_PRELOAD
.
la $t9, strstr
addiu $s0, $s3, 0x178
mov $a0, $s0
jarl $t9 //strstr
addit $a1, ***
// strst symbol
.extern strstr
Теперь еще один фрагмент кода с небольшой разницей. Тогда та же самая уловка крюка, кажется, не работает. Элемент экспорта функции strstr в libc по-прежнему strstr
.
addiu $a0, ***
addiu $a1, ***
jal strstr
nop
strstr:
lui $t7, 0x59
lw $t9, off_58D02C
jr $t9
addiu $t8, $t7, (off_58D02C - 0x590000)
off_58D02C: .word __imp_strstr
// strst symbol
.extern __imp_strstr
Так что же делать с таким символом, как .extern __imp_strstr
?
Любой совет будет принят во внимание! Заранее спасибо.