Показать сообщение отдельно

  #4  
Старый 02.02.2024, 21:21
mhertz
Участник форума
Регистрация: 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 (т.е. недействительня инструкция), и поэтому ты ничего не видишь

ну и ещё можешь не скрывать, что это блек кака, это и так очевидно
 
Ответить с цитированием