• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Сложение строк, путь кук, консоль

  • Автор темы Satell
  • Дата начала
S

Satell

1. есть динамический массив char** array; куда записываются строки из файла ф-ей getline
имеющие вид www.adres.com, нужно прибавить к этим строкам http:// в начале

такая конструкция выдаёт ошибку, как сделать правильно?
char* setpath;
char setpath2[300];

setpath="http://";
strcpy(setpath2,array[j]);
strcat(setpath,setpath2);

2. есть ли функция для определения пути директории с куками или имени компьютера, т.к. он от него зависит

C:\Documents and Settings\compname\Cookies\compname@www.adres[1].txt

3. есть консольное приложение Visual studio VC++ 5, как сделать его вообще чтобы никакого окна небыло?
 
E

European

1. Синтаксис вроде нормальный. Что за ошибка?
2. SHGetFolderLocation, SHGetFolderPath, SHGetSpecialFolderLocation, SHGetSpecialFolderPath. CSIDL = CSIDL_COOKIES.
3. Ну самый очевидный способ решения, это взять хэндл окна консоли и по нему спрятать окно. А вообще, зачем делать консольное приложение если окно не нужно? Может проще сделать Win32 приложение без окна?
 
S

Satell

странно, но при всех вариантах что мне дали программа аварийно завершается...

//вариант1
char setpath[]="http://";
char* tmp=new char[800];
tmp[0]=0;

strcpy(tmp,setpath);
strcat(tmp,"www.google.com");


//вариант2
char* setpath;
char* setaddr;
char setpath2[300];

setpath="http://";
setaddr="www.google.com";
sprintf (setpath2,"%s%s",setpath,setaddr);

//вариант3
char setpath[300] = {0};
wsprintf(setpath, "http://%s", array[j]); // Строка будет вида http://+содержимое array[j]
 
E

European

Воспользуйся отладкой и определи, какая команда вызывает завершение работы. Приведенный тобой код вполне адекватен
 
S

SunSanych

Судя по названию переменных этот код используется в теле цикла. И предпологаю, что не все элементы массива array заполнены верными указателями, а все функции для работы со строками обычно это дело пытаются по мере сил отследить. Например они заругаются, если один из параметров равен 0х00000000.

Для прохода по всему массиву код должен быть примерно такой:
Код:
char setpath[300];

for(j=0; j<ARRAY_SIZE; j++)
{
[indent]setpath[0] = 0;[/indent]
[indent]if( !array([j] ) break;[/indent]

[indent]wsprintf(setpath, "http://%s", array[j]);[/indent]
[indent]//работаем c setpath[/indent]
}

Чёго-то не то получилось с форматированием :) , попробую еще раз:

Код:
char setpath[300];

for(j=0; j<ARRAY_SIZE; j++)
{
setpath[0] = 0;
if( !array[j] ) break;

wsprintf(setpath, "http://%s", array[j]);
//работаем c setpath
}

P.S. Если нулевой указатель может встречатся в масиве где угодно, а не только как завершающий элемент, то break надо заменить на continue.
 
S

Satell

вроде сделал, глючный какой-то этот vc++, вообще не понятно из-за чего вылетает программа, убрал просто один внешний цикл for(int i=0; i<1; i++) в котором ничего и не происходило и заработало
имя компьютера тоже определяется только со второго раза почему-то, при первом вызове всегда hui будет

Код:
char buffer5[256];		
DWORD size5;			
if (GetUserName(buffer5,&size5)!=0)		
{
puts(buffer5);
}
else
{
puts("hui");
}

как найти путь к папке с куками, такая штука не работает, т.к. не находит заголовочный файл shfolder.h, visual studio 5, windows xp

#include <shfolder.h>
TCHAR path[MAX_PATH_SIZE];
SHGetSpecialFolderPath(0, path, CSIDL_COOKIES, FALSE);


как использовать встроенный отладчик, если в ассемблерных кодах ничего не понятно?
 
S

Satell

можно ли сделать таймер в консольном приложении??
так не работает

Код:
int CALLBACK TimerProc(void)
{
MessageBox(NULL,"Timer","Timer",MB_OK);
puts("timer");
return 0;
}

int timerID=SetTimer(NULL,0,1000,&TimerProc);
while(1)
{
Sleep(10000);
break;
}
KillTimer(0,timerID);
 
E

European

Поставь студию посвежее, 2003 хотя бы
 
S

Satell

в 2005й студии shfolder.h есть но при компиляции выдает кучу ошибок именно в shfolder.h
 
E

European

Телепаты в отпуске и выражение "при компиляции выдает кучу ошибок" ничего не говорит
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
вижу.. вижу... что плохая карма у тебя внучек... хидер виндовс не подключеный довлеет над тобой =)
 
H

HECSH716

:D прошу помощи. подскажите как на Це++ билдере реализовать процедуру запуска EXE'шника если путь к этому файлу будет указан в TextBox'е ЗАРАНИЕ БЛАГОДАРЮ! ...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!