Компилируемые языки (С/С++/С#, Pascal/Delphi, Basic, Asm, Java) — HackZona.Ru

В этой теме задаются вопросы по любым компилируемым языкам. Не забывайте обрамлять исходные коды в теги code и /code Оставляю за собой права редактировать и удалять посты.

Компилируемые языки (С/С++/С#, Pascal/Delphi, Basic, Asm, Java)

Сообщений в теме: 195
Нравится
Не нравится
Репутация: 0
Рейтинг: 1
Кол-во тем: 0
Сообщения: 0

В этой теме задаются вопросы по любым компилируемым языкам.
Не забывайте обрамлять исходные коды в теги code и /code
Оставляю за собой права редактировать и удалять посты.
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
хачу написать прогу каторая шлёт пакеты на указнаыи адрес (знаю такие ест-но хачу написать свою поучится) вот я и думал и так и непредумал как ето осушаетвит написал TCP сервер каторыи когда книму подключится клиент начинает слать ему бесконечно ето char buffer[1000*1000] потом подключился я с теленетом к етому серверу локално и начал ждать пока несависнет ждал ждал но нефига кто знает как ето осуществить?
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
Здравствуйте! У меня в c# возникли проблемы с преобразованием типов. Мне нужно чтобы число конвертировалось в строку, я писал так:
[code]
int i;
label1.Text = Convert.ToString(i);
[/code]
и он выводит ошибку =((
use of unassigned local variable «i».
Как исправить эту ошибку?
Нравится
Не нравится
Репутация: 0
Рейтинг: 1
Кол-во тем: 0
Сообщения: 504
[QUOTE=FieryKit;86853]А попроще никак??[/QUOTE]
Реализовать свою функцию вывода, вызывающую WriteConsole (или WriteFile для стандартного вывода) или printf, которая перед этим перекодирует всё :lol: Или же отправлять посимвольно (отображение множеств ANSI<->OEM можно найти в Сети). Еще вопросы?:P

[B]UPD1[/B]: кстати, вот еще один пример:
[code]
#include «stdafx.h»
#include <locale.h>
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, «Russian»);
printf("%s", «Привед медвед!\n»);
getch();

return 0;
}

[/code]
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
[QUOTE=_mbr_;86796][code]
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
int len = strlen(«Привет медвед»);
char* oem_string = new char[len+1];
memset(oem_string, '\0', len+1);
CharToOem(«Привет медвед», oem_string);
printf("%s\n", oem_string);
delete [] oem_string;
system(«PAUSE»);
return EXIT_SUCCESS;
}
[/code]
Вот еще один исходник. Гемор, но наиболее правильное решение для винды =) Если неохота возиться с выделением/освобождением буферов, имеет смысл написать объект (C++)[/QUOTE]
А попроще никак??
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
[QUOTE=_mbr_;86857]Реализовать свою функцию вывода, вызывающую WriteConsole (или WriteFile для стандартного вывода) или printf, которая перед этим перекодирует всё :lol: Или же отправлять посимвольно (отображение множеств ANSI<->OEM можно найти в Сети). Еще вопросы?:P[/QUOTE]

тоже самое только по русски ))
[B]//Промпт в помощь[/B]
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
Надо сначала присвоить какое-то значение переменной.
Нравится
Не нравится
Репутация: 0
Рейтинг: 2
Кол-во тем: 0
Сообщения: 0
[QUOTE=V1S;85878]Вопросик, в делфи, кроме канваса (Canvas), есть еще какие то «холсты» для работы с графикой?[/QUOTE]

я думаю тебе пригодится это…
[url]http://www.codenet.ru/progr/delphi/stat/Form.php[/url]
[url]http://www.cyberguru.ru/programming/delphi/delphi-components-part2-page17.html[/url]
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
всем привет, народ, памагите решить задачу вот условие:
Дан файл целых чисел, содержащий данные из нескольких файлов в формате: в начальном элементн файла, хранится число N, в следующих N элеметах хранятся размеры исходных файлов. Надо восстановить файлы.
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
Как получить текущий указатель стека в Дельфи. И можно ли узнать адресс другой программы в опер. памяти чтобы указать этот адресс в качестве адресса возврата или если не программы тогда коды операц. системы.(WinAPI функции, и ...) Ведь у них постояные адреса?
Нравится
Не нравится
Репутация: 0
Рейтинг: 1
Кол-во тем: 0
Сообщения: 504
[QUOTE=FieryKit;86681]… что-то не понял )
PS
Прога моя пишет иероглифами а не я!!! ))[/QUOTE]
Мда, вы ничего не поняли сталобыть? Вот пример консольного приложения ANSI:

[code]
#include <stdlib.h>
#include <stdio.h>

int main(аргументы по желанию)
{
system(«chcp 1251»); // специфично только для ms windows
printf(«Привед медвед\0»);
system(«PAUSE);
return EXIT_SUCCESS;
}
[/code]
Вся фишка в том, что по умолчанию консоль настроена на работу в странице cp866. А ваши константы, которые компилятор заносит в секцию данных, хранятся как ANSI. Поэтому надо изменить локаль консоли от cp866 к cp1251. Все понятно? :lol:
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
[QUOTE=_mbr_;86615]Консольное приложение? Нужно задать локаль, например так:

system(«chcp 1251»); // только для Windows

После этого можно печатать сообщения в консоль[/QUOTE]

… что-то не понял )
PS
Прога моя пишет иероглифами а не я!!! ))
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
[QUOTE=-JC-;86610]После компиляции переименуй файл и всё.[/QUOTE]

Во что переименовать?
Нравится
Не нравится
Репутация: 0
Рейтинг: 1
Кол-во тем: 0
Сообщения: 504
[QUOTE=h4x;85609]А можете плиз раскидать код на Дельфи (элементарный) который уязвим к переполнению буфера и байт-код для запуска какого-нибудь файла например .js :D если мона. Для винды.[/QUOTE]

Весь код приводить не буду, только какую-нибудь уязвимую процедуру

[code]
procedure VulnerableProc(data1: string);
var data2: string;
begin
CopyMemory(Pointer(data2), Pointer(data1), Length(data1));
end;
[/code]
Конечно, пример извращен =) Ни один нормальный программист не будет так присваивать строки.

Насчет шеллкода для запуска, то здесь следует конкретно подумать насчет реализации, поскольку она зависит от ситуации. Как вариант, можно получить адрес функции ShellExecute с помощью процедуры GetProcAddress, или же сразу вызвать её, используя табличное значение адреса (последнее не универсально).

[B]UDP1:[/B] Вчера, после разговора в оерси, решил реализовать демонстрацию на Delphi. Приведенный выше пример конечно приводит к падению программы, но это не следствие переполнения, а некорректного копирования объекта string. Поэтому набросал еще одну программу, которая хранит массив фиксированной длины и заполняет его через CopyMemory.
Исходник прикреплен
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
А можете плиз раскидать код на Дельфи (элементарный) который уязвим к переполнению буфера и байт-код для запуска какого-нибудь файла например .js :D если мона. Для винды.
Нравится
Не нравится
Репутация: 0
Рейтинг: 1
Кол-во тем: 0
Сообщения: 504
[QUOTE=ZeroQ;86291]всем привет, народ, памагите решить задачу вот условие:
Дан файл целых чисел, содержащий данные из нескольких файлов в формате: в начальном элементн файла, хранится число N, в следующих N элеметах хранятся размеры исходных файлов. Надо восстановить файлы.[/QUOTE]
Условие задано неполностью =\

[code]
N
размер_файла_1
размер_файла_2

размер_файла_N
[/code]
Как бы суть понятна, создать N файлов заданного размера. Но есть и непонятки:
а) Имена создаваемых файлов
б) Собственно их содержимое
[B]ZeroQ[/B], уточните условия задания:lol:
Нравится
Не нравится
Репутация: 0
Рейтинг: 1
Кол-во тем: 0
Сообщения: 504
[QUOTE=ZeroQ;86429]имена вида n.txt, где n порядковый номер файла
всё содержимое файлов есть в начальном файле(так же как и их количество и размер)[/QUOTE]

Приведена не вся программа, а только процедура
[code]
procedure UnpackFiles(FileName: string);
var
f1, f2: File;
N, i, j: Integer;
temp: ^string;
new_file_name: string;
begin
f1 := assign(FileName);
Reset(f1, 1); // длина блока = 1 байт

BlockRead(f1, N, 4); // читаем 4 байта (Little Endian)

for i:=1 to N do
begin
// открываем файл i.txt
str(i, new_file_name);
new_file_name := new_file_name + '.txt';
f2 := assign(new_file_name);
Rewrite(f2, 1);

// читаем следующие 4 байта, чтобы узнать длину
BlockRead(f1, j, 4);

// создаем временный буфер
temp := GetMem(j);
// копируем содержимое в этот буфер
BlockRead(f1, temp, j);
// записываем в файл
BlockWrite(f2, temp, j);
// освобождаем объекты
Dispose(temp);
close(f2);

// следующая итерация цикла
end;
end;
[/code]
[B]WARNING:[/B] программа работает с двоичными файлами. Будет большой ошибкой передать ей текстовый файл с циферками и буковками:lol: Создать заготовку можно обратной функцией (упаковкой сталобыть), или создав её в HEX-редакторе.
Нравится
Не нравится
Репутация: 0
Рейтинг: 1
Кол-во тем: 0
Сообщения: 504
[QUOTE=FieryKit;86576]Значит так:
Когда пишу код проги всё ОК, а когда запускаю вместо русских буковок выводит аброкадабру! Как исправить?
PS
если поможет: Пользуюсь компилятором Dev-C++[/QUOTE]

Консольное приложение? Нужно задать локаль, например так:

system(«chcp 1251»); // только для Windows

После этого можно печатать сообщения в консоль
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
После компиляции переименуй файл и всё.
Нравится
Не нравится
Репутация: 0
Рейтинг: 1
Кол-во тем: 0
Сообщения: 504
[QUOTE=FieryKit;86768]Сделал всё как вы написали:
[/QUOTE]
[code]
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
int len = strlen(«Привет медвед»);
char* oem_string = new char[len+1];
memset(oem_string, '\0', len+1);
CharToOem(«Привет медвед», oem_string);

printf("%s\n", oem_string);
delete [] oem_string;
system(«PAUSE»);
return EXIT_SUCCESS;
}
[/code]
Вот еще один исходник. Гемор, но наиболее правильное решение для винды =) Если неохота возиться с выделением/освобождением буферов, имеет смысл написать объект (C++)
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
имена вида n.txt, где n порядковый номер файла
всё содержимое файлов есть в начальном файле(так же как и их количество и размер)
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
Значит так:
Когда пишу код проги всё ОК, а когда запускаю вместо русских буковок выводит аброкадабру! Как исправить?
PS
если поможет: Пользуюсь компилятором Dev-C++
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
Вопросик, в делфи, кроме канваса (Canvas), есть еще какие то «холсты» для работы с графикой?
Нравится
Не нравится
Репутация: 0
Рейтинг: 0
Кол-во тем: 0
Сообщения: 0
h4x, если ты срашиваешь как открыть например какой то исполняемый файл (exe, dat, com), то обычная команда WinExec(путь к проге, 1);
Нравится
Не нравится
Репутация: 0
Рейтинг: 1
Кол-во тем: 0
Сообщения: 0
[B]
В этом топике задаем вопросы по языкам Delphi и Pascal.
Как всегда прежде чем задать вопрос воспользуйтесь поиском.
[/B]
Нравится
Не нравится
Репутация: 0
Рейтинг: 2
Кол-во тем: 0
Сообщения: 0
обьясните мне плиз для чего:

[code]
этот макрос —
wVersionRequested = MAKEWORD(2, 2);
и эта функция — err = WSAStartup(wVersionRequested, &wsaData;);
[/code]
2 3
Для того, чтобы отвечать в темах на форуме необходимо войти на сайт или зарегистрироваться.