HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 24.08.2021, 19:01
.deserve
Познающий
Регистрация: 06.09.2018
Сообщений: 32
С нами: 4045092

Репутация: 23
По умолчанию

Цитата:
Сообщение от #Northn  

msbuild запрещает использование __thiscall в любом случае, поэтому приходится костылить через __fastcall
он не запрещает его использовать при вызове других не статических методов класса, но не позволяет определять не статические методы класса, который не был объявлен
 
Ответить с цитированием

  #12  
Старый 24.08.2021, 21:16
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

Цитата:
Сообщение от .deserve  

Не советую использовать __thiscall, потому что поддержка этого кейворда есть только начиная с MSVC 2005. При этом компилируя через GCC, clang ты вообще потеряешь доступ к регистру хранящему this ptr (ecx) ибо он будет на стеке валяться. Для почти полной совместимости желательно использовать соглашение __fastcall, ибо оно абсолютно точно реализовано идентично в GCC, g++, clang, ICC и этого набора уже достаточно. А еще при создании функции хука ты можешь попасться на IDB на некоторых имплементациях MSVC, в связи с тем что у тебя нету дефайна класса, что лучше не допускать. (но к удивлению в 14.2 всё нормально)
Для Win32 GCC и Clang используют соглашение __thiscall с this в ECX. Для POSIX у них везде используется только __cdecl (даже для классов)
 
Ответить с цитированием

  #13  
Старый 18.09.2021, 10:51
Murakami
Новичок
Регистрация: 17.07.2015
Сообщений: 2
С нами: 5697686

Репутация: 0
По умолчанию

Цитата:
Сообщение от AdCKuY_DpO4uLa  

В самое начало, перед всеми инклюдами

C++:





Код:
#define _CRT_SECURE_NO_WARNINGS


Один из вариантов того, как можно подменить определенное сообщение

C++:





Код:
void
__fastcall
HOOKED_ChatAddEntry
(
void
*
_this
,
void
*
pUnk
,
int
nType
,
char
*
szText
,
char
*
szPrefix
,
DWORD textColor
,
DWORD prefixColor
)
{
if
(
nType
==
8
&&
strstr
(
szText
,
"{FFFFFF}SA-MP {B9C9BF}0.3.7 {FFFFFF}Started"
)
)
sprintf
(
szText
,
"САМП ЗАПУЩЕН ЪУЪЪУЪУЪУЪУЪ"
)
;
return
origChatAddEntry
(
_this
,
nType
,
szText
,
szPrefix
,
textColor
,
prefixColor
)
;
}

Адрес 0x0064010 работает только с версией 0.3.7? Если да, то подскажите по какому адресу он будет перехватывать 0.3.dl?
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.