Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Как получить адреса
Посл.ответ Сообщение

Ранг: 5.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 сентября 2006 07:12
· Личное сообщение · #1

Как на Delphi организовать программку которая показывала какие адреса в памяти занимает какая нибудь другая программа. И чтобы с этими адресами можно было работать. Может какие API функции есть?




Ранг: 61.7 (постоянный)
Активность: 0.050
Статус: Участник
я

Создано: 04 сентября 2006 07:24
· Личное сообщение · #2

не понятно, что ты имеешь ввиду. но если писать и читать память чухого процесса, то -ReadProcessMemory\WriteProcessMemory, а с адресами ты путаешь что-то. или может быть имеешь ввиду физические адреса? что тебе нужно конкретно делать?



Ранг: 5.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 сентября 2006 07:32
· Личное сообщение · #3

Ну например ArtMoney когда выбираешь процесс а потом ищешь значение она начинает поиск по адресам.Так вот как ArtMoney узнает какие адреса в памяти принадлежат именно этой игре. ReadProcessMemory\WriteProcessMemory помоему они толькочитают\ипишут в память а как найти адрес?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 04 сентября 2006 07:35
· Личное сообщение · #4

держи исходник с коментариями...

cee7_04.09.2006_CRACKLAB.rU.tgz - Project1.dpr

-----
[nice coder and reverser]




Ранг: 5.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 сентября 2006 07:37
· Личное сообщение · #5

Спасибо Ща посмотрю



Ранг: 5.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 сентября 2006 09:08
· Личное сообщение · #6

А может кто кинет линк где можно почитать про работу с памятью




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 04 сентября 2006 09:13
· Личное сообщение · #7

а что не понятно? в примере всё очень просто!

-----
[nice coder and reverser]




Ранг: 5.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 сентября 2006 09:19
· Личное сообщение · #8

У меня Delphi 2005 (наверно поставлю 7). Там быстро выпрыгивает консоль и сразу закрывается. На 7 так будет?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 04 сентября 2006 09:24
· Личное сообщение · #9

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

-----
[nice coder and reverser]




Ранг: 5.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 сентября 2006 09:45
· Личное сообщение · #10

Я ща переделал. Не понятно...
ProcessID := StrToInt('$'+ParamStr(1)); Как это переделать?
Delphi говорит: "$" is not a valid integer value




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 04 сентября 2006 09:49
· Личное сообщение · #11

StrToInt('$'+SomeStr) - это типа функция StrToHex.
вроде должно всё норм быть

-----
[nice coder and reverser]




Ранг: 5.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 04 сентября 2006 09:51
· Личное сообщение · #12

Это перевод из строки в целое число. Неа дельфи ругается. Может убрать знак вообще? Ща посмотрим.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 04 сентября 2006 12:17
· Личное сообщение · #13

sion пишет:
ReadProcessMemory\WriteProcessMemory помоему они толькочитают\ипишут в память а как найти адрес?

Получается, никак. Мля, ну что те сказать. Чё взялся за дело, если не соображаешь как связать чтение данных и поиск.

-----
Недостаточно только получить знания:надо найти им приложение




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 05 сентября 2006 03:02
· Личное сообщение · #14

sion пишет:
ProcessID := StrToInt('$'+ParamStr(1)); Как это переделать?

Немножко подумать. В оригинале ProcessID задается первым параметром в строке запуска программы.
Т.к. ты свою прогу запускаешь без параметров, то получается StrToInt('$') - ошибка.
Тебе надо просто присваивать ProcessID и адрес тому, что нужно.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 05 сентября 2006 03:13
· Личное сообщение · #15

sion пишет:
Неа дельфи ругается. Может убрать знак вообще?

Купи учебник по Delphi или в электронном виде поищи, это ж элементарно.

ReadProcessMemory долго будет работать, лучше сдампить страницу(ы) и искать через указатель.

-----
Yann Tiersen best and do not fuck




Ранг: 9.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 05 сентября 2006 04:11
· Личное сообщение · #16

sion пишет:
А может кто кинет линк где можно почитать про работу с памятью


wasm.ru
например
FrostFix - Создание сканера виртуальной памяти процессов (4) (печать) /27.06.05/ Хитов: 564
Предмет повествования состоит в изучении принципов сканирования виртуальной памяти процессов (этим занимаются такие программы как ArtMoney и др.), создании и реализации алгоритма целочисленного "универсального обманщика игр".
FrostFix - Сканер виртуальной памяти «внутри» процесса (2) (печать) /01.07.05/ Хитов: 576
Целью статьи является рассмотрение принципов создания сканера виртуальной памяти, находящегося «внутри» исследуемого процесса.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 05 сентября 2006 04:16 · Поправил: Rascal
· Личное сообщение · #17

А можно и длл инжектить. Не понадобится память для хранения всей памяти процесса. Ибо искать надо по всему адресному пространтсву для переменных полученных динамически.

-----
Недостаточно только получить знания:надо найти им приложение




Ранг: 23.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 05 сентября 2006 05:52
· Личное сообщение · #18

Вариант с инжектом DLL действительно неплохой, главное скорость поиска будет очень высокой, только с передачей результатов могут возникнуть проблемы.
А как ArtMoney делает интересно? Ведь скорость поиска у неё очень велика и никаких dll она не инжектит.




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 05 сентября 2006 06:53
· Личное сообщение · #19

Как раз мани ищет медленно. Потому как не инжектит. А передавать через мьютексы и маппинг. Всё надёжно и без каких-либо проблем

-----
Недостаточно только получить знания:надо найти им приложение




Ранг: 23.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 сентября 2006 00:25
· Личное сообщение · #20

Медленно? Мне всегда казалось это быстро Наверное потому что сравнить не с чем.


 eXeL@B —› Программирование —› Как получить адреса
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати