
02.02.2024, 21:21
|
|
Участник форума
Регистрация: 21.02.2020
Сообщений: 148
С нами:
3278520
Репутация:
168
|
|
Сообщение от _chapman_
thumb - 16-и битный набор инструкций, может выполняться на некоторых процессорах arm
arm - 32-ух битный набор инструкций, предоставляет полный набор возможностей ARM. Однако, я не совсем понимаю, чем оно мне поможет. Не просвятишь?)
Дополнение:
Решил поэксперементировать и хукнуть функцию INT123_catchsignal.
C++:
Код:
int
handler
(
int
signal
,
int
*
structure
)
{
__android_log_print
(
ANDROID_LOG_INFO
,
"[SIGNAL]"
,
"Installing handler...."
)
;
// return o_handler(signal, structure);
sigemptyset
(
0
)
;
__android_log_print
(
ANDROID_LOG_INFO
,
"[SIGNAL]"
,
"Calling sigaction...."
)
;
int
v3
=
sigaction
(
signal
,
(
const
struct
sigaction
*
)
&
structure
,
0
)
;
int
result
=
0
;
if
(
v3
==
-
0x1
)
return
-
0x1
;
return
result
;
}
Результат меня удивил: все заработало. Просвятите, пожалуйста, почему) По сути, код в хуке и изначальный код идентичны, но первый работает, а второй - нет. А еще, краш хандлер так и не заработал  может, есть альтернативные варианты по его установке?
все проблемы у тебя из-за того, что ты вызываешь функции в режиме arm (что видно по тому, что твои адреса чётные), их нужно вызывать в режиме thumb, если он используется ( т.е. делать их нечётными добавлением единицы (+ 1), или ты думал, зачем все самп клиенты это делают?) )
а на счёт твоего крашхандлера - он обрабатывает только SIGSEGV, хотя в данном случае скорее всего будет SIGILL (т.е. недействительня инструкция), и поэтому ты ничего не видишь
ну и ещё можешь не скрывать, что это блек кака, это и так очевидно
|
|
|