Сейчас на форуме: Rio, vsv1, site-pro (+7 невидимых)

 eXeL@B —› Софт, инструменты —› Посоветуйте ПО для определения адреса TLabel в чужом ПО
<< . 1 . 2 .
Посл.ответ Сообщение

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

Создано: 19 апреля 2014 17:53
· Личное сообщение · #1

Здравствуйте!
Посоветуйте инструмент (программу), которая позволит осуществить следующее:

В чужом ПО, написанном на Delphi, мне нужно получить текст метки. Я бы мог это сделать с помощью ReadProcessMemory, зная, что это TLabel и зная его смещение. Чем определить класс я уже нашел (но пока не определил, доступ к жертве в понедельник):
1) rtdoi (Run time Delphi / C++ Builder forms object inspector
2) Delphi Application Peeper
обе работают по принципу щелкнул мышью по контролу - получил инфу.

А нет ли такой программы, чтобы получить и адрес этого контрола ?
Желательно чтоб работала без инсталляции.

В принципе давно использую по мелочам WinHex версии 15.4. Может с помощью него это возможно ? Если да, то подскажите как. А то я с его помощью даже не смог найти в памяти приложения текст нужной метки.
Также, пробовал декомпилировать программу в DeDe - тоже не нашел.

Или может посоветуйте другие способы ?
Спасибо.



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 20 апреля 2014 18:34 · Поправил: TryAga1n
· Личное сообщение · #2

Не знаю, может поможет
В памяти, описание лейбла выглядит следующим образом:

Начиная снизу-вверх, можно получить все его параметры.
Нас интересует Caption, у него значение 3 байта, но как понял я, это 2 параметра Первый параметр - 020D, второй параметр - 07. Далее, встаем на адрес второго байта(0D) первого параметра(020D), этим адресом является 01C525E9 и начиная от него отнимаем первый параметр(020D).
01C525E9-020D=1C523DC - данный адрес - это начало памяти нашего лейбла(на самом деле не так. я не знаю как правильно назвать).
Следующий шаг. К началу памяти 1C523DC прибавляем (вроде константа), байт по получившемуся адресу (01C523DC) = A8. Это смещение, по которому находится текст лейбла в данный момент.
Получаем следующую математику:
01C525E9-020D+0С+A8=1C52490



p.s.: гонял на приатаченном выше приложении, в других может иначе все...лень ковыряться)



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

Создано: 20 апреля 2014 20:09
· Личное сообщение · #3

TryAga1n
спасибо, поковыряюсь.
А как называется Ваша программа ?


TryAga1n пишет:
В памяти, описание лейбла выглядит следующим образом


но это по всей видимости не сам объект а лишь DFM



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 20 апреля 2014 20:16
· Личное сообщение · #4

travnik пишет:
А как называется Ваша программа ?

https://ssl.exelab.ru/f/action=vthread&forum=3&topic=22734&page=0#18

travnik пишет:
но это по всей видимости не сам объект а лишь DFM

Возможно, тогда рядом с загруженным в память DFM выделяется память под каждый объект и его свойства



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

Создано: 20 апреля 2014 20:18
· Личное сообщение · #5

TryAga1n пишет:
https://ssl.exelab.ru/f/action=vthread&forum=3&topic=22734&page=0#18


я имел ввиду какой у Вас Hex редактор ?



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 20 апреля 2014 20:38
· Личное сообщение · #6

Скрины окна дампа с отладчика OllyDbg 1.10. Hex-редактор в твоем вопросе совершенно не поможет



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

Создано: 21 апреля 2014 00:49 · Поправил: travnik
· Личное сообщение · #7

подскажите, пож-ста, как воспроизвести вашу картинку вторую.
установил OllyDbg 1.10 взял тут ( http://exelab.ru/download.php?action=get&n=MzYw )
открыл ваш Project1.exe, окно CPU, если это оно на картинке, выглядит не так красиво.
в колонке ASCII ни одного читаемого слова не увидел, может в шрифтах проблема. Наверно надо потратить время, смотрю на этом форуме программа распространенная.

TryAga1n пишет:
Hex-редактор в твоем вопросе совершенно не поможет


WinHex позволяет просматривать и редактировать содержимое виртуальной памяти процессов (кнопочка Open RAM) Разве этого не достаточно ? В WinHex вижу участок с картинки, только адреса в колонке слева другие. Впрочем, в OllyDbg тоже.



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 21 апреля 2014 05:33
· Личное сообщение · #8

Думаю для начала вам стоит прочитать цикл статей по использованию отладчика, без этих знаний дальнейший конструктив невозможен
http://exelab.ru/art/?action=view&id=284
http://pro.dtn.ru/cr.html



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 21 апреля 2014 15:11
· Личное сообщение · #9

1. Ищем код, создающий форму на которой лежит TLabel
Code:
  1. CODE:0044DDAC                mov     ecx, ds:pForm1  <<< Адрес переменной, в которую будет записан адрес созданного объекта
  2. CODE:0044DDB2                mov     eax, ds:Application
  3. CODE:0044DDB7                mov     eax, [eax]
  4. CODE:0044DDB9                mov     edx, TForm1    <<< RTTI класса TForm1
  5. CODE:0044DDBF                call    Forms::TApplication::CreateForm(System::TMetaClass *,void *)


2. Смотрим в RTTI класса формы, где лежит объект TLabel
Code:
  1. CODE:0044D960 TForm1         dd offset _cls_Unit1_TForm1
  2. CODE:0044D964                align 10h
  3. CODE:0044D970                dd offset byte_44DAD8
  4. CODE:0044D974                dd offset word_44DAA0  <<< Компоненты на форме
  5. CODE:0044D978                dd offset word_44DAB3
  6. CODE:0044D97C                align 10h
  7. CODE:0044D980                dd offset aTform1        ; "TForm1"
  8. CODE:0044D984                dd 2FCh
  9. CODE:0044D988                dd offset off_44217C
  10. CODE:0044D98C                dd offset Classes::TComponent::SafeCallException(System::TObject *,void *)
  11. CODE:0044D990                dd offset Forms::TCustomForm::AfterConstruction(void)


3. Нужный TLabel по смещению 0x2F8 от начала объекта формы
Code:
  1. CODE:0044DAA0 word_44DAA0    dw 1
  2. CODE:0044DAA2                dd offset byte_44DACC
  3. CODE:0044DAA6                dw 2F8h
  4. CODE:0044DAA8                dw 0
  5. CODE:0044DAAA                dw 0
  6. CODE:0044DAAC                db 6,'Label1'


4. Идем по ссылкам на созданный объект формы (pForm1) и отсчитываем от начала объекта 0x2F8 байт
Code:
  1. debug033:01D81E30 Form1          dd offset _cls_Unit1_TForm1
  2. debug033:01D81E34                dd offset unk_1D816C4
  3. debug033:01D81E38                dd offset aForm1         ; "Form1"
  4. debug033:01D81E3C                dd 0
  5. debug033:01D81E40                dd offset unk_1D837E8
  6. debug033:01D81E44                dd 0
  7. debug033:01D81E48                dd 0


5. Идем по ссылке на созданный компонент TLabel
Code:
  1. debug033:01D82126                db    0
  2. debug033:01D82127                db    0
  3. debug033:01D82128                dd offset label1
  4. debug033:01D8212C                db  16h
  5. debug033:01D8212D                db    0
  6. debug033:01D8212E                db    0
  7. debug033:01D8212F                db    0


6. Считаем смещение на переменную, хранящую текстовую строку
Code:
  1. debug033:01D83654 label1         dd offset _cls_StdCtrls_TLabel
  2. debug033:01D83658                dd offset Form1
  3. debug033:01D8365C                dd offset aLabel1        ; "Label1"
  4. debug033:01D83660                dd 0
  5. debug033:01D83664                dd 0
  6. debug033:01D83668                dd 0
  7. debug033:01D8366C                dd 0
  8. debug033:01D83670                dd 0
  9. debug033:01D83674                dd 0
  10. debug033:01D83678                dd 1
  11. debug033:01D8367C                dd offset off_411E36
  12. debug033:01D83680                dd offset off_411E46
  13. debug033:01D83684                dd offset Form1
  14. debug033:01D83688                dd 0
  15. debug033:01D8368C                dd offset Controls::TControl::WndProc(Messages::TMessage &)
  16. debug033:01D83690                dd offset label1
  17. debug033:01D83694                dd 20h
  18. debug033:01D83698                dd 28h
  19. debug033:01D8369C                dd 24h
  20. debug033:01D836A0                dd 0Dh
  21. debug033:01D836A4                dd 8EAh
  22. debug033:01D836A8                dd 1000000h
  23. debug033:01D836AC                dd offset unk_10101
  24. debug033:01D836B0                dd 0
  25. debug033:01D836B4                dd 301h
  26. debug033:01D836B8                dd offset caption        ; "30648" <<< 0x01D836B8 - 0x01D83654
  27. debug033:01D836BC                dd offset unk_1D83810
  28. debug033:01D836C0                dd 0


7. Автоматизируем процесс
8. ???
9. PROFIT!!!11

| Сообщение посчитали полезным: travnik

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

Создано: 23 апреля 2014 14:51 · Поправил: travnik
· Личное сообщение · #10

rmn
спасибо за такой подробный ответ, правда я опять не знаю какой программой вы получили такой код ?
мне нужно получить лишь смещение TLabel (п.3), остальное трудностей не вызывает.

Кстати, я вчера решил задачу, а именно нашел переменную, значение которой присваивается метке Я и раньше ее находил, но там был юникод а у меня Delphi 7 не юникодная и думал просто мусор, потом прочитал как юникод и о чудо !

БОЛЬШОЕ СПАСИБО всем кто помогал

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



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 23 апреля 2014 15:21
· Личное сообщение · #11

travnik
Закрой сам тему и не позорься.
После вопроса к скринам TryAga1n , я задумался, что за бред, такое в днк должно быть и как ты ольку не модифицируй это видно в любом скрине, что это оттуда.

travnik пишет:
WinHex позволяет просматривать и редактировать содержимое виртуальной памяти процессов (кнопочка Open RAM) Разве этого не достаточно ? В WinHex вижу участок с картинки, только адреса в колонке слева другие. Впрочем, в OllyDbg тоже.

Это убило!
travnik пишет:
спасибо за такой подробный ответ, правда я опять не знаю какой программой вы получили такой код ?

А это даже поразило

| Сообщение посчитали полезным: Jaa, GroundHog

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

Создано: 23 апреля 2014 15:49
· Личное сообщение · #12

Vovan666 пишет:
как ты ольку не модифицируй это видно в любом скрине


я твою ольку ранее никогда не видел, чтоб узнавать ее.
Vovan666 пишет:
убило... поразило ...


слишком впечатлительный.

Vovan666 пишет:
Закрой сам тему и не позорься.


лучше ты удали отсюда свое сатанинское сообщение.



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 23 апреля 2014 16:24 · Поправил: Vovan666
· Личное сообщение · #13

travnik
Хорошо! сформулирую свое прошлое сообщение покороче.
Ты понятия не имеешь, что такое диззасемблеры и отладчики, ты не можешь даже на дельфи показать, что тебе надо и зачем. Как ты собрался что-то инжектить куда-то?

UPD
инжектить=хучить



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

Создано: 23 апреля 2014 17:29
· Личное сообщение · #14

Vovan666 пишет:
Ты понятия не имеешь, что такое диззасемблеры и отладчики


всё верно !

Vovan666 пишет:
ты не можешь даже на дельфи показать


зачем ? мне не нужна помощь в делфи, что мне надо было и зачем описано вначале.

Vovan666 пишет:
Как ты собрался что-то инжектить куда-то?


с чего ты это взял ? не надо фантазировать, не собирался вовсе.



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

Создано: 23 апреля 2014 23:45
· Личное сообщение · #15

Vovan666 пишет:
Как ты собрался что-то инжектить куда-то?

тут и без инжекта и хуков можно обойтись.
другое дело что ТС вообще ничего сам не собирается делать, хотя rnm уже всё подробно описал



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 24 апреля 2014 22:43
· Личное сообщение · #16

travnik
Не подскажите, почему в IDR f2FC ?
Блин, неужели еще никто не догадался?



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

Создано: 24 апреля 2014 23:15
· Личное сообщение · #17

crypto пишет:
Блин, неужели еще никто не догадался?

То что это не f2FC адрес, а field 2FC?


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


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