как поставить брейк на на ссылку в стеке?

Тема в разделе "WASM.RESEARCH", создана пользователем asmbot, 18 окт 2009.

  1. asmbot

    asmbot New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2009
    Сообщения:
    6
    Столкнулся по видимому с незнанием Ольки.
    Где-то в программе хранится переменная с искомым значением.
    Я нашел что в стек ложится ссылка на область в динамической памяти и туда загоняется уже отформатированый стринг с вставленым значением, адрес которого мне как раз надо найти.
    Как мне поставить брейк, чтобы видеть когда туда ложится эта ссылка, и начинает записываться строка?
    Если я перехвачу в этот момент я найду адрес переменной в которой хранится искомое значение.

    Не уверен куда больше относится эта тема к BEGINNERS или к реверсу)
     
  2. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    asmbot
    ставь на код который загоняет значение в стек,или если знаешь адрес в стеке,куда должна положиться ссылка,открой этот адрес в дампе.

    а темя точно в бегиннерс...
     
  3. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Если я все правильно понял, то сначала надо найти место, где происходит выделение памяти (т.к. адрес м.б. разным) и затем поставить аппаратную точку останова на запись в эту область памяти.
     
  4. asmbot

    asmbot New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2009
    Сообщения:
    6
    как раз код мне и надо найти который это делает

    Да именно это. Поставил аппаратный брейк на write на dword в стеке куда в процессе исполнения положится адрес. Перестопался в куче хлама который туда пихается в процессе, стек всетаки(((
    Есть ли способ более конкретно брейкнутся?
     
  5. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    asmbot
    если незнаешь,( что? :lol: )кто?где?когда?,тогда придется сидеть и жмакать F9 пока на увидишь нужный тебе адрес.хоть унзайте примерное местоположение кода который закидывает ссылку...
     
  6. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    asmbot
    Вообще-то, я не это имел в виду. Стек штука динамичная -- F9 замучаешься нажимать. Я предлагал подняться по стеку вызовов ф-ии, чтобы найти то место, где была выделена память. Этим можно убить сразу двух зайцев: по пути можно найти искомое место, где записываются данные, а в случае, если они пишутся другим потоком (ну мало ли что), найти выделение памяти, чтобы поставить точку останова на запись в только выделенный кусок.

    Как вариант, можно воспользоваться тем, что аллокатор часто выделяет одни и те же виртуальные адреса. Т.е. попробовать поставить аппаратную точку останова на запись в самом буфере и перезапустить программу (точка останова останется). Если повезет, то можно быстро найти то, что нужно.
     
  7. asmbot

    asmbot New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2009
    Сообщения:
    6
    На данный момент мне надо хитро стопнуться в тот момент, когда в динамической памяти (ссылка на которую в стеке по адресу, всегда одинаковому, [0068А584]) появляется определенный известный мне стринг. Но в стеке до того момента как там положится адрес на эту строку в динамической памяти много чего происходит.
     
  8. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    asmbot
    А адрес динамический всегда одинаковый?
     
  9. asmbot

    asmbot New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2009
    Сообщения:
    6
    нашел значение мне нужное, надо было сразу искать по коммандам FPU ибо число было дробное
    нашел где его лучше всего изменить
    теперь встала еще одна проблема

    как засунуть в код exe-шника комманду которая изменяет это значение
    нужно сделать всего лишь добавить add или sub
    но в том месте где надо нигде не встрянешь, если только не сделать jmp на мою комманду + комманду которую занял jmp и затем jmp обратно
    есть какие-нибудь тулзы чтоб делать это не ручками?
    или есть какие другие методы делания такого патча?
     
  10. asmbot

    asmbot New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2009
    Сообщения:
    6
    нет конечно, выделяется всегда новый кусок памяти

    я просто стопнулся после wsock32.connect
    добавил брейк на адрес стека куда будет записываться ссылка на выделенную память и начал жмакать F9
    на 61ый стоп увидел что в стеке появилось нужная мне ссылка
    запустил опять
    остановился на 60ом стопе и пошел по коду