|
|
|
| Насколько я помню, cheops мне говорил, что хорошо разбирается в С++... Поэтому вопрос в большей степени адресован именно ему, но если ещё кто-то отзовётся, буду очень благодарен...
Вопрос:
Все, наверно, знакомы с программой Art Money... Когда-то она мне была очень полезна, но теперь это уже в прошлом, пришло время написать самому что-то подобное, для своих целей.
А целью моей является подключение к процессу и слежка за его памятью, теми переменными, которые в ней гуляют... А именно, нужно получить возможность считывать значение определённой переменной через определённый промежуток времени.
Как найти переменную в памяти я тоже почти разобрался, я так считаю, но на определённом этапе есть загвоздка, с неё и начнём...
Итак, насколько я знаю, чтобы найти в памяти определённую переменную (её значение) нужно: во-первых знать её текущее значение, во-вторых иметь возможность изменить это значение (я думаю, это не всегда обязательно). Затем, если вышеперечисленное возможно, то следует сделать дамп памяти процесса, затем изменить значение искомой переменной и сделать ещё раз дамп памяти. Потом нужно каким-то образом сравнить эти два дампа... И так пока не вычислишь эту самую переменную... Но вот здесь-то и проблема... Чтобы вычислить переменную, нужно ,видимо, проводить какие-то операции с "offset", а я ни как не могу разобраться... Что же нужно, всётаки, чтобы довести дело до конца и вычислить одновременно и адрес переменной и её значение? | |
|
|
|
|
|
|
|
для: EvgenLog
(14.08.2005 в 21:43)
| | Вопрос:
Что за Art Money?
Ответ:
>Что же нужно, всётаки, чтобы довести дело до конца и вычислить одновременно >и адрес переменной и её значение?
Получаем адрес переменных(var1,2,3):
int main ()
{
//Определяем 3 переменных и присвоим им значения
int var = 11;
int var2 = 22;
int var3 = 33;
//печатаем адреса этих переменных
cout << $var1 << endl
<< $var2 << endl
<< $var3 <<endl;
//печатаем значение переменной var1
cout << var1;
return 0;
}
|
Думаю с кодом все понятно......
P.S. Если сказал не то что надо, то извеняйте ... | |
|
|
|
|
|
|
|
для: Boss
(14.08.2005 в 23:00)
| | А что за адрес печатается таким образом?
Это не то что нужно... Нужно сначала значения переменных найти... В программе, а затем уже их печатать... | |
|
|
|
|
|
|
|
для: EvgenLog
(14.08.2005 в 23:34)
| | Тьфу.... писал торопился....
Вообще можно получить адрес переменной, используя операцию получения адреса &
замени символ & на $..... | |
|
|
|
|
|
|
|
для: EvgenLog
(14.08.2005 в 21:43)
| | Вряд ли смогу помочь, чтобы сейчас влазить мне нужно много времени, а его нет :((( | |
|
|
|