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

  #1  
Старый 10.07.2019, 23:22
Vadim.dll
Участник форума
Регистрация: 04.07.2015
Сообщений: 168
С нами: 5715860

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

Почему эта херня крашиииит? Адреса все правильные, проверял. Где-то ошибка в определении функции? Перепробовал уже все что можно

C++:





Код:
typedef
void
(
__stdcall
*
_PrintChatMsg
)
(
DWORD chat_info
,
wchar_t
*
message
)
;
void
mainThread
(
PVOID
)
{
MessageBoxW
(
NULL
,
L
"WAIT"
,
L
"WAIT"
,
MB_OK
)
;
DWORD dwSamp
=
(
DWORD
)
GetModuleHandle
(
L
"samp.dll"
)
;
_PrintChatMsg print_char_msg
=
(
_PrintChatMsg
)
(
dwSamp
+
0x64520
)
;
DWORD chat_info
=
(
DWORD
)
(
dwSamp
+
0x21A0E4
)
;
print_char_msg
(
chat_info
,
(
wchar_t
*
)
L
"Hello world!"
)
;
}
 
Ответить с цитированием

  #2  
Старый 11.07.2019, 00:13
index
Новичок
Регистрация: 18.10.2015
Сообщений: 6
С нами: 5563739

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

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

Почему эта херня крашиииит? Адреса все правильные, проверял. Где-то ошибка в определении функции? Перепробовал уже все что можно

C++:





Код:
typedef
void
(
__stdcall
*
_PrintChatMsg
)
(
DWORD chat_info
,
wchar_t
*
message
)
;
void
mainThread
(
PVOID
)
{
MessageBoxW
(
NULL
,
L
"WAIT"
,
L
"WAIT"
,
MB_OK
)
;
DWORD dwSamp
=
(
DWORD
)
GetModuleHandle
(
L
"samp.dll"
)
;
_PrintChatMsg print_char_msg
=
(
_PrintChatMsg
)
(
dwSamp
+
0x64520
)
;
DWORD chat_info
=
(
DWORD
)
(
dwSamp
+
0x21A0E4
)
;
print_char_msg
(
chat_info
,
(
wchar_t
*
)
L
"Hello world!"
)
;
}

1. Второй аргумент функции имеет тип
Код:
char *
, а не
Код:
wchar_t *
.

2. В какой кодировке идет компиляция? Есть подозрение, что компилируешь с набором символов ANSI. В этом случае макрос GetModuleHandle заменяется на функцию GetModuleHandleA, принимает твою Юникод-строку, возвращает NULL и далее идет попытка вызова функции по адресу NULL + 0x64520 с ошибкой доступа.
 
Ответить с цитированием

  #3  
Старый 11.07.2019, 00:48
Vadim.dll
Участник форума
Регистрация: 04.07.2015
Сообщений: 168
С нами: 5715860

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

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

1. Второй аргумент функции имеет тип
Код:
char *
, а не
Код:
wchar_t *
.
2. В какой кодировке идет компиляция? Есть подозрение, что компилируешь с набором символов ANSI. В этом случае макрос GetModuleHandle заменяется на функцию GetModuleHandleA, принимает твою Юникод-строку, возвращает NULL и далее идет попытка вызова функции по адресу NULL + 0x64520 с ошибкой доступа.
Пробовал с char - не помогает, Компилирую с набором символов Юникод, написал же выше, что адреса проверил, все правильно
 
Ответить с цитированием

  #4  
Старый 11.07.2019, 01:53
_Vine_
Участник форума
Регистрация: 06.01.2016
Сообщений: 154
С нами: 5447649

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

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

Почему эта херня крашиииит? Адреса все правильные, проверял. Где-то ошибка в определении функции? Перепробовал уже все что можно

C++:





Код:
typedef
void
(
__stdcall
*
_PrintChatMsg
)
(
DWORD chat_info
,
wchar_t
*
message
)
;
void
mainThread
(
PVOID
)
{
MessageBoxW
(
NULL
,
L
"WAIT"
,
L
"WAIT"
,
MB_OK
)
;
DWORD dwSamp
=
(
DWORD
)
GetModuleHandle
(
L
"samp.dll"
)
;
_PrintChatMsg print_char_msg
=
(
_PrintChatMsg
)
(
dwSamp
+
0x64520
)
;
DWORD chat_info
=
(
DWORD
)
(
dwSamp
+
0x21A0E4
)
;
print_char_msg
(
chat_info
,
(
wchar_t
*
)
L
"Hello world!"
)
;
}

Эта функция имеет переменное количество аргументов

Сделай такой прототип функции

C++:





Код:
typedef
void
(
__stdcall
*
_PrintChatMsg
)
(
DWORD chat_info
,
const
char
*
message
,
.
.
.
)
;
 
Ответить с цитированием

  #5  
Старый 11.07.2019, 06:00
memir
Постоянный
Регистрация: 21.08.2015
Сообщений: 343
С нами: 5646349

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

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

Эта функция имеет переменное количество аргументов
Сделай такой прототип функции

C++:





Код:
typedef
void
(
__stdcall
*
_PrintChatMsg
)
(
DWORD chat_info
,
const
char
*
message
,
.
.
.
)
;

Цитата:

stdcall
переменное количество аргументов
фигню говоришь

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

Почему эта херня крашиииит? Адреса все правильные, проверял. Где-то ошибка в определении функции? Перепробовал уже все что можно

C++:





Код:
typedef
void
(
__stdcall
*
_PrintChatMsg
)
(
DWORD chat_info
,
wchar_t
*
message
)
;
void
mainThread
(
PVOID
)
{
MessageBoxW
(
NULL
,
L
"WAIT"
,
L
"WAIT"
,
MB_OK
)
;
DWORD dwSamp
=
(
DWORD
)
GetModuleHandle
(
L
"samp.dll"
)
;
_PrintChatMsg print_char_msg
=
(
_PrintChatMsg
)
(
dwSamp
+
0x64520
)
;
DWORD chat_info
=
(
DWORD
)
(
dwSamp
+
0x21A0E4
)
;
print_char_msg
(
chat_info
,
(
wchar_t
*
)
L
"Hello world!"
)
;
}

у тя прототип не правильный. а ещё ты берешь не указатель на структуру чата, а указатель на указатель на структуру чата. исправляй
 
Ответить с цитированием

  #6  
Старый 11.07.2019, 12:22
Vadim.dll
Участник форума
Регистрация: 04.07.2015
Сообщений: 168
С нами: 5715860

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

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

фигню говоришь

у тя прототип не правильный. а ещё ты берешь не указатель на структуру чата, а указатель на указатель на структуру чата. исправляй
Точно! Теперь заработало, спасибо!
 
Ответить с цитированием

  #7  
Старый 11.07.2019, 15:15
Stiopko
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами: 4319022

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

Как в ImGui можно сделать чтобы при измении размеров круг и трикутник не выходил за грани темно зеленого квадрата, а обрезался на грани
 
Ответить с цитированием

  #8  
Старый 13.07.2019, 15:42
Vadim.dll
Участник форума
Регистрация: 04.07.2015
Сообщений: 168
С нами: 5715860

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

Где находится функция, которая обрабатывает RPC в samp.dll R1 или любой другой версии? Мне бы хотя бы наводку, как ее искать
 
Ответить с цитированием

  #9  
Старый 13.07.2019, 16:52
Jack_Savage
Участник форума
Регистрация: 06.11.2016
Сообщений: 150
С нами: 5008255

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

0x3A6A0 - 0.3.7 R3 (вроде тут обработка RPC)
 
Ответить с цитированием

  #10  
Старый 14.07.2019, 17:22
Stiopko
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами: 4319022

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

Почему ошибка где-то в вот в этих строках

C++:





Код:
typedef
HRESULT
(
WINAPI
*
_EndScene
)
(
IDirect3DDevice9
*
)
;
//прототип
typedef
HRESULT
(
WINAPI
*
_Reset
)
(
IDirect3DDevice9
*
,
D3DPRESENT_PARAMETERS
*
)
;
// они в разных файлах
typedef
void
(
*
_MyEndScene
)
(
IDirect3DDevice9
*
)
;
typedef
void
(
*
_MyReset
)
(
IDirect3DDevice9
*
,
D3DPRESENT_PARAMETERS
*
)
;


Ошибка



____

Прикрепил исходник

_

Пофиксил
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...