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

 eXeL@B —› Вопросы новичков —› Найти запись в локальную переменную...
Посл.ответ Сообщение

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

Создано: 28 октября 2011 20:29
· Личное сообщение · #1

работаю в IDA и есть код:

Code:
  1. .text:005D18F4 2E0 8D 84 24 A8 00 00 00                                lea     eax, [esp+2E0h+var_238]
  2. .text:005D18FB 2E0 8D B4 24 B4 00 00 00                                lea     esi, [esp+2E0h+var_22C]
  3. .text:005D1902 2E0 B9 88 46 7E 00                                      mov     ecx, offset _camera
  4. .text:005D1907 2E0 56                                                  push    esi             ; int
  5. .text:005D1908 2E4 50                                                  push    eax             ; int
  6. .text:005D1909 2E8 FF 74 24 60                                         push    [esp+2E8h+var_288] ; int
  7. .text:005D190D 2EC FF 74 24 60                                         push    [esp+2ECh+var_28C] ; int
  8. .text:005D1911 2F0 FF 74 24 60                                         push    [esp+2F0h+var_290] ; float
  9. .text:005D1915 2F4 FF 75 04                                            push    dword ptr [ebp+4] ; range
  10. .text:005D1918 2F8 E8 73 DF E9 FF                                      call    Weapons_shots_


для начало интересует что сюда передается:
Code:
  1. .text:005D1907 2E0 56                                                  push    esi             ; int
  2. .text:005D1908 2E4 50                                                  push    eax             ; int


только без всяких отладчиков...

не обходимо найти что сюда записывается:
lvar_238

жму X везде выдает только на чтение...

Есть тут люди более менее понимаемые?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 28 октября 2011 20:40
· Личное сообщение · #2

ну дык ето адрес (видимо) передается и Weapons_shots_ уже туда пишет (или не пишет) - глядите сами

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

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

Создано: 28 октября 2011 20:42
· Личное сообщение · #3

это я знаю что передается этот адрес туда, вопрос что туда передается???



Ранг: 106.6 (ветеран), 7thx
Активность: 0.040.02
Статус: Участник

Создано: 28 октября 2011 20:47 · Поправил: digger70
· Личное сообщение · #4

Можно вопрос - что собственно воспользоваться отладчиком мешает?



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

Создано: 28 октября 2011 21:01
· Личное сообщение · #5

Надо было кряклаб не в экзэлаб переименовывать, а в гадалок.нет
В приведенном коде НИЧЕГО туда не пишется.



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

Создано: 28 октября 2011 21:03
· Личное сообщение · #6

Это из GTA-Vice City 1.0 туда точно передается что-то...



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

Создано: 28 октября 2011 21:03
· Личное сообщение · #7

Есть база на IDA



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

Создано: 28 октября 2011 21:07
· Личное сообщение · #8

Пишется-то наверно в call Weapons_shots_, а что в нем никому кроме тебя неизвестно.



Ранг: 106.6 (ветеран), 7thx
Активность: 0.040.02
Статус: Участник

Создано: 28 октября 2011 21:09
· Личное сообщение · #9

Очень содержательно...
Vovan666
+1




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 28 октября 2011 21:32 · Поправил: OKOB
· Личное сообщение · #10

первые 4 параметра передаются по значению, последние 2 по ссылке (указателю). Через ECX обычно передается адрес объекта класса для которого вызывается метод.

_camera->Weapons_shots_(range, var_290, var_28C, var_288, &var_238, &var_22C)

sendersu пишет:
и Weapons_shots_ уже туда пишет


-----
127.0.0.1, sweet 127.0.0.1


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

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

Создано: 28 октября 2011 22:03
· Личное сообщение · #11

OKOB
Code:
  1. .text:005D1902 2E0 B9 88 46 7E 00                                      mov     ecx, offset _camera

угу this.



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

Создано: 28 октября 2011 22:26
· Личное сообщение · #12

OKOB
как ты узнал что ссылки передаются?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 28 октября 2011 23:00
· Личное сообщение · #13

в чем разница между указателем и ссылкой, уважаемый VintProg,
только чур без подсказок в виде гогления ))
как оказалось & очень интересная деталь С-С++ ))



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

Создано: 28 октября 2011 23:02
· Личное сообщение · #14

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



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

Создано: 28 октября 2011 23:25
· Личное сообщение · #15

а вот бы понять на что ссылка народ?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 29 октября 2011 00:01
· Личное сообщение · #16

Пользуйся кнопкой "Правка", не создавай сообщения подряд.



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

Создано: 29 октября 2011 01:28
· Личное сообщение · #17

ну что кто нибудь что-то выяснил?



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

Создано: 30 октября 2011 13:44
· Личное сообщение · #18

VintProg
А чего выяснять. Решение первое и нормальное - применить отладчик. Решение второе: при вызове Weapons_shots передается ссылка, т.е. адрес lvar_238 Соответственно в самой Weapons_shots в ИДА вы уже не увидете обращений к lvar_238 и придется отслеживать 4-й параметр. Аналогично может произойти и в других подпрограммах. Т.ч. долго еще искать и искать вам ответ самому, раз отладчик низзя... Разжевывать никто не будет, хоть это и для новичков. Уже все разжевали, а я только сегодня добрый



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 30 октября 2011 16:26 · Поправил: Hexxx
· Личное сообщение · #19

tundra37 пишет:
Решение первое и нормальное - применить отладчик

Ерунда.

var_238 - это стековая переменная, а это:
Code:
  1. lea     esi, [esp+2E0h+var_22C]

загрузка указателя на начало этой переменной. Переменная может оказаться, как простого типа (int, short, char), так и структурой или массивом, или даже классом в стеке. Если ниже по коду, после Weapons_shots_, обращений именно к var_22C, значит это сложный тип.

Ида физически не может прохавать код вида:
Code:
  1. char buffer[0x100];
  2. MyFunc(buffer); //тут что-то пишется в буфер
  3. if (buffer[12]!=0)

Она напишет, что buffer - это одна переменная, а buffer[12] - другая. Для нее и то и другое - стек, она не знает что эти два куска стека - части одной переменной.
Поэтому, нужно выяснить какого размера эта переменная, и объяснить иде. А выяснить это можно только анализом того как код MyFunc() обращается с передаваемым буфером. Дальше, когда известен размер, нужно создать правильную стековую переменную buffer, правильного размера. Тогда IDA начнет показывать var_22C+XX в том месте где обращаются к содержимому.
Ну и дальше уже предстоит разбираться что там по этому смещению XX, какое-то поле структуры/класса или просто смещение в массиве.

-----
Реверсивная инженерия - написание кода идентичного натуральному




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

Создано: 30 октября 2011 17:47 · Поправил: VintProg
· Личное сообщение · #20

Code:
  1. .text:0046F8AA 0 038 8B 5C 24 50   mov     ebx, [esp+38h+arg_14]


RwV3d структура... точнее ссылка на структуру...



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

Создано: 31 октября 2011 13:28
· Личное сообщение · #21

VintProg И всем сразу все стало ясно Что ж ты такой ленивый. Привел одну строчку совсем по другому адресу и имя какой-то левой(для нас) структуры. И что ждем? Ты явно перепутал этот форум с форумом экстрасенсов. Пока по твоей информации можно дать только общие советы. Но увы они для тебя бесполезны


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


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