Войти или зарегистрироваться
Выберите удобный способ — аккаунт создастся автоматически.
Или войдите по логину и паролю
 |
|

24.09.2009, 18:10
|
|
Участник форума
Регистрация: 26.04.2009
Сообщений: 146
С нами:
8969696
Репутация:
68
|
|
Mitnick17, а тебе, что нужно? "не встроенные программы", это программы, находящиеся в директориях которые прописаны в path(набрать в path в cmd).
>>%windir%/help/ntcmds.chm нужно в cmd набрать?
провести столь безабидный эксперемент быстрее, чем написать сообщение на форум, ответ - да.
а вообще, зря ты тут спросил, оффтопик какбе. тему бы создал новую лучше... хотя поздно уже 
|
|
|

24.09.2009, 20:40
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
С нами:
9705420
Репутация:
21
|
|
Вот столкнулся с такой проблемкой:
Мне нужно вычитать область памяти, адрес которой известен(hex). Сразу в голове построился процесс написания программы и что буду использовать. Сразу решил использовать указатели. Но вот проблема - при вводе в консоль адреса ячейки, которым нужно инициализировать указатель, чет не то происходит - адрес присваивается, но значение не вычитывается(то есть не правильное ).
1. В какой тип переменной можно записать hex, а потом его использовать для инициализации указателя?(с интом чаром чет не вышло)
2. Мне нужно вычитать к примеру 50 адресов, идущих после известного. Инкримент указателя для этого подойдет?
Смотрю, чет никто не отвечает. Вот к приведу пример как я делал:
Код:
void main()
{
int a = 19;
cout << "a = " << a << "\n&a = " << &a << endl;
}
это код в одной проге. Я ее запускаю и вижу адрес переменной а в памяти.
Далее я запускаю другую прогу, с кодом
Код:
void main()
{
int *a = (int*)0x0012FF60; //адрес переменной из 1-й проги
cout << "a = " << a << "\n*a = " << *a << endl;
}
Видно что адрес в указателе сменился, а вот доступиться к значению не могу по нормальному(((
А вообще нужно чтоб адрес был введен пользователем к примеру так:
Код:
char addr[10];
cin >> addr; // сюда вводится адрес из первой проги
char *mem = (char*) addr;
Подскажите плз, а то моск уже кипит от количеста перепробованных вариантов(((
Последний раз редактировалось horlyk; 25.09.2009 в 00:04..
|
|
|

25.09.2009, 00:02
|
|
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
С нами:
8795069
Репутация:
79
|
|
2horlyk
1. память я надеюсь своего процесса? Если нет то читать из чужого ReadProcessMemory MSDN
Если из своего, то просто по указателю. Чтото типа этого.
int foo;
int bar;
foo = 0xXXXXXXXX;
bar = *((int *)foo);
для foo можно использовать любой тип, главное чтобы он был 4-x байтным.
Если в следующий раз будет что-то не получатся - покажи код!
2. Да, но следи, чтобы указатель не вылетал за пределы выделенной памяти, а то схватишь access violation.
|
|
|

25.09.2009, 00:14
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
С нами:
9705420
Репутация:
21
|
|
Сообщение от Hiro Protagonist
2horlyk
1. память я надеюсь своего процесса? Если нет то читать из чужого ReadProcessMemory MSDN
Да, именно в другом процессе. Так то оно выходит. Можно плз пример использования той ф-и, что ты мне дал в ссылке, а то я чет там ниче не понял.
|
|
|

25.09.2009, 00:26
|
|
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
С нами:
8795069
Репутация:
79
|
|
2horlyk
Небольшой ликбез. В винде каждый процесс имеет свое изолированное адресное пространство, напрямую недоступное из другого процесса. Чтобы прочитать из другого процесса необходимо получить описатель объекта ядра типа процесс, связанного с другим процессом. Для этого нужно воспользоваться функцией OpenProcess (если конечно мы сами его не создавали, тк CreateProcess в структуре PROCESS_INFORMATION вернет описатели созданного процесса и его первичного потока).
HANDLE hProc;
hProc = OpenProcess(PROCESS_VM_READ, NULL, PID);
где PID - идентификатор процесса. Обрати внимание что перед этим необходимо установить привелегию seDebugPrivilege иначе читать нельзя будет, об этом читай здесь.
далее используешь этот описатель в ReadProcessMemory:
ReadProcessMemory(hProc, lpBaseAddress, ...);
где lpBaseAddress - указатель на данные в удаленном потоке (тот самый foo в примере выше). Остальные параметры должны быть понятны.
|
|
|

25.09.2009, 00:33
|
|
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
С нами:
9705420
Репутация:
21
|
|
Hiro Protagonist, спасибо, буду пробовать.
|
|
|

25.09.2009, 10:11
|
|
Участник форума
Регистрация: 11.09.2008
Сообщений: 107
С нами:
9296442
Репутация:
21
|
|
Столкнулся с проблемой.
Нужно прочитать из файла массив целочисленных переменных, как это можно реализовать.
файл вида
12 54 65 43 23
23 54 32 65 63
и т.д.
числа разделенны пробелом.
Спасибо.
|
|
|

25.09.2009, 10:17
|
|
Постоянный
Регистрация: 07.03.2009
Сообщений: 357
С нами:
9042754
Репутация:
399
|
|
Сообщение от Gin
Столкнулся с проблемой.
Нужно прочитать из файла массив целочисленных переменных, как это можно реализовать.
файл вида
12 54 65 43 23
23 54 32 65 63
и т.д.
числа разделенны пробелом.
Спасибо.
Здесь нужно уточнить, что в итоге должно получиться:
одномерный массив со всеми числами, или двумерный...
|
|
|

25.09.2009, 10:28
|
|
Познающий
Регистрация: 29.01.2008
Сообщений: 82
С нами:
9622901
Репутация:
88
|
|
Как проверять валидность хттп и сокс прокси?
|
|
|

25.09.2009, 10:33
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
в зависимости от ситуации и способа использования. Очень удобное делать так:
сначала пингуеш его - чтобы отсеять те которые в офлайне компы.
А потом короткий тестовый запрос на крутой ресурс. хотябы на главную страницу гугля. ну или на свой гейт который даст ответ. И тогда ты можеш смотреть как именно пашет прокси. Но чаще всего хватает уже пинга
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 39 (пользователей: 0 , гостей: 39)
|
|
|
|