Столкнулся по видимому с незнанием Ольки. Где-то в программе хранится переменная с искомым значением. Я нашел что в стек ложится ссылка на область в динамической памяти и туда загоняется уже отформатированый стринг с вставленым значением, адрес которого мне как раз надо найти. Как мне поставить брейк, чтобы видеть когда туда ложится эта ссылка, и начинает записываться строка? Если я перехвачу в этот момент я найду адрес переменной в которой хранится искомое значение. Не уверен куда больше относится эта тема к BEGINNERS или к реверсу)
asmbot ставь на код который загоняет значение в стек,или если знаешь адрес в стеке,куда должна положиться ссылка,открой этот адрес в дампе. а темя точно в бегиннерс...
Если я все правильно понял, то сначала надо найти место, где происходит выделение памяти (т.к. адрес м.б. разным) и затем поставить аппаратную точку останова на запись в эту область памяти.
как раз код мне и надо найти который это делает Да именно это. Поставил аппаратный брейк на write на dword в стеке куда в процессе исполнения положится адрес. Перестопался в куче хлама который туда пихается в процессе, стек всетаки((( Есть ли способ более конкретно брейкнутся?
asmbot если незнаешь,( что? )кто?где?когда?,тогда придется сидеть и жмакать F9 пока на увидишь нужный тебе адрес.хоть унзайте примерное местоположение кода который закидывает ссылку...
asmbot Вообще-то, я не это имел в виду. Стек штука динамичная -- F9 замучаешься нажимать. Я предлагал подняться по стеку вызовов ф-ии, чтобы найти то место, где была выделена память. Этим можно убить сразу двух зайцев: по пути можно найти искомое место, где записываются данные, а в случае, если они пишутся другим потоком (ну мало ли что), найти выделение памяти, чтобы поставить точку останова на запись в только выделенный кусок. Как вариант, можно воспользоваться тем, что аллокатор часто выделяет одни и те же виртуальные адреса. Т.е. попробовать поставить аппаратную точку останова на запись в самом буфере и перезапустить программу (точка останова останется). Если повезет, то можно быстро найти то, что нужно.
На данный момент мне надо хитро стопнуться в тот момент, когда в динамической памяти (ссылка на которую в стеке по адресу, всегда одинаковому, [0068А584]) появляется определенный известный мне стринг. Но в стеке до того момента как там положится адрес на эту строку в динамической памяти много чего происходит.
нашел значение мне нужное, надо было сразу искать по коммандам FPU ибо число было дробное нашел где его лучше всего изменить теперь встала еще одна проблема как засунуть в код exe-шника комманду которая изменяет это значение нужно сделать всего лишь добавить add или sub но в том месте где надо нигде не встрянешь, если только не сделать jmp на мою комманду + комманду которую занял jmp и затем jmp обратно есть какие-нибудь тулзы чтоб делать это не ручками? или есть какие другие методы делания такого патча?
нет конечно, выделяется всегда новый кусок памяти я просто стопнулся после wsock32.connect добавил брейк на адрес стека куда будет записываться ссылка на выделенную память и начал жмакать F9 на 61ый стоп увидел что в стеке появилось нужная мне ссылка запустил опять остановился на 60ом стопе и пошел по коду