ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

07.11.2008, 14:48
|
|
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме: 89596
Репутация:
21
|
|
Сообщение от nerezus
Никак.
Поэтому так часто и встречаются уязвимости типа переполнений буфера, которых в других языках не бывает.
Это что же в таком языке как С вообще нет никакой засчиты? А если я вместо переменной типа int напишу Hello, то любая прога на С у меня вылетит?
|
|
|

07.11.2008, 16:32
|
|
Новичок
Регистрация: 05.11.2008
Сообщений: 5
Провел на форуме: 9492
Репутация:
1
|
|
Сообщение от VIP
Это что же в таком языке как С вообще нет никакой засчиты? А если я вместо переменной типа int напишу Hello, то любая прога на С у меня вылетит?
Сшка язык более низкого уровня чем Питон. В этом есть свои плюсы, но и есть свои минусы. Если тебе надо какую-то особую защиту в твоем приложении - тебе придется написать ее самому) Защиты от дурака не существует, зато есть быстродействие, более простой доступ к памяти и предположение что программист не дурак и знает что пишет 
Питон ориентирован на то чтоб тебе было максимально легко и комфортно писать программу, С ориентированна на то чтоб компьютеру было максимально легко и комфортно ее исполнять.
На счет Инт и Хеллоу то это синтаксическая ошибка, такой код просто не скомпилируется. В отличии от Питона в С надо явно задавать тип переменных.
На счет массивов - если ты не знаешь сколько элементов у тебя будет просто создай масив на количество элементво точно больше чем тебе может протребоватся(если не хочешь особо мучать свою голову), либо динамический масив, указатели, выделение памяти....
А вообще если ты в книге дочитал до структур, ЧИТАЙ ДАЛЬШЕ, там все это будет....
------
Апаю свой вопрос
на этапе линка Сшка(VC++ 2008 как и пробовал в 2005) выдает ошибки:
Код:
1>Process.obj : error LNK2028: unresolved token (0A000009) "extern "C" struct HWND__ * __stdcall FindWindowW(wchar_t const *,wchar_t const *)" (?FindWindowW@@$$J18YGPAUHWND__@@PB_W0@Z) referenced in function "public: void * __clrcall CProcess::CreateGEProcess(void)" (?CreateGEProcess@CProcess@@$$FQ$AAMPAXXZ)
1>Process.obj : error LNK2019: unresolved external symbol "extern "C" struct HWND__ * __stdcall FindWindowW(wchar_t const *,wchar_t const *)" (?FindWindowW@@$$J18YGPAUHWND__@@PB_W0@Z) referenced in function "public: void * __clrcall CProcess::CreateGEProcess(void)" (?CreateGEProcess@CProcess@@$$FQ$AAMPAXXZ)
Что ей так не нравится в моей програме, учитывая что по сути там всего одна гореинструкция hWindow=FindWindow(LPCWSTR("TForm"),0); ???
Пробовал создать консольное приложение, успешно линкует и запускается..... А в ВиндовсФормАпликейшн получается ошибка 
Последний раз редактировалось Fertility; 07.11.2008 в 16:40..
|
|
|

07.11.2008, 16:44
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
А если я вместо переменной типа int напишу Hello, то любая прога на С у меня вылетит?
Есть наверняка проверки дополнительные на ввод данных и создана система обработки ошибок try catch - поэтому не каждая вылетет. 
|
|
|

07.11.2008, 16:47
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
Fertility Вот так попробуй - hWindow=FindWindowW(LPCWSTR("TForm"),0); 
|
|
|

07.11.2008, 17:10
|
|
Новичок
Регистрация: 05.11.2008
Сообщений: 5
Провел на форуме: 9492
Репутация:
1
|
|
Сообщение от GlOFF
Есть наверняка проверки дополнительные на ввод данных и создана система обработки ошибок try catch - поэтому не каждая вылетет. 
Нету такой проверки, более того быть НЕ должно принципиально =) Если програма не вылетает или не появляется сыстем эррор это просто не тру Си программа
Если програмеру такая проверка нужна - он должен написать ее сам! Тоесть считать текстовую переменную, переобразовать ее в число, если это не число сообщить об этом пользователю, а если число то ТОЛЬКО ТОГДА передавать это число на переменную Int
Сообщение от GlOFF
Fertility Вот так попробуй - hWindow=FindWindowW(LPCWSTR("TForm"),0);
Попробовал, не работает. ошибку выдает туже  Подобные функции типа GetForegroundWindow тоже линкование не проходят.... Хэлп 
|
|
|

07.11.2008, 17:55
|
|
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме: 89596
Репутация:
21
|
|
А сортировать массивы в C можно? Я имею ввиду не методом прохождения в массиве и перекидыванием большего значения в конец, а просто какой-либо функцией?
Последний раз редактировалось VIP; 07.11.2008 в 18:24..
|
|
|

07.11.2008, 18:23
|
|
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме: 7134052
Репутация:
1204
|
|
А сортировать массивы в C можно?
Можно.
|
|
|

07.11.2008, 18:39
|
|
Участник форума
Регистрация: 31.07.2008
Сообщений: 207
Провел на форуме: 299231
Репутация:
107
|
|
в любом языке можно, если есть соответствующая либа. даже если кто напишет ее для асма, то и на асме можно будет - инклудь и ранай )
|
|
|

07.11.2008, 18:48
|
|
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
Провел на форуме: 89596
Репутация:
21
|
|
Почему этот код не даёт мне 10 случайных чисел?
Код:
# include <stdio.h>
# include <stdlib.h>
int main() {
int a, i;
i=0;
while (i!=10) {
int rand(a);
i=i+1;
printf("%g\n", a);
}
}
|
|
|

07.11.2008, 19:05
|
|
Moderator - Level 7
Регистрация: 21.03.2007
Сообщений: 1,200
Провел на форуме: 7134052
Репутация:
1204
|
|
Почему этот код не даёт мне 10 случайных чисел?
Потому что не использовал srand
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|