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

  #11  
Старый 04.02.2021, 18:34
#Northn
Флудер
Регистрация: 10.08.2017
Сообщений: 2,659
С нами: 4609424

Репутация: 183


По умолчанию

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

Ребят, меня тралит компилятор, помогите

Есть функция, чья задача, это при вызове получить аргументы, отправленные в MessageBoxA, и позволить их изменить
Эта функция корректно отображает аргументы, т.е. всё перехватывается

C++:





Код:
__declspec
(
naked
)
void
_stdcall
printSomeShit
(
int
a
,
char
*
b
,
char
*
c
,
int
d
)
{
char
bb
[
256
]
;
char
cc
[
256
]
;
printf
(
"\n"
)
;
std
::
cin
>>
bb
;
b
=
bb
;
printf
(
"\n"
)
;
std
::
cin
>>
cc
;
c
=
cc
;
printf
(
"\n%d || %s || %s || %d"
,
a
,
b
,
c
,
d
)
;
_asm ret
;
}


Однако же попытки присваивания не меняют значение аргументов, хотя если в отладчике студии свапнуть адреса, то всё сработает
Я решил посмотреть, что делает в этом случае компилятор, и вот:

То-есть, он вообще ничего не делает. Он буквально проигнорировал b = bb и не прописал ей инструкций. В смысле? Почему?

Если же попытаться написать &b == &bb, то он даже компилировать программу откажется.
Я не понимаю, что тут происходит ,_,
ну у тебя как минимум __declspec(naked) а ты объявляешь переменные внутри функции

прибавь к ним static (static char) и проверь, как себя поведёт

мсвс запрещает вообще внутри функций объявлять переменные (не static), значит у тебя не мсвс
 
Ответить с цитированием
 





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


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




ANTICHAT ™ © 2001- Antichat Kft.