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

 eXeL@B —› Вопросы новичков —› Отладка в Visual Studio 2010
Посл.ответ Сообщение

Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 июля 2014 18:56
· Личное сообщение · #1

Как посмотреть или сделать лог вызовов от breakpoint до breakpoint, лучше второе.

Если можно с параметрами из стека.

То есть все call-ы с их виртуальными адресами.
В OllyDebugger не могу приаттачиться к процессу во время вызова MessageBox-а,
поэтому пользуюсь отладчиком VS2010



Ранг: 33.8 (посетитель), 11thx
Активность: 0.020.01
Статус: Участник

Создано: 29 июля 2014 19:04
· Личное сообщение · #2

никак
нету трассы в Visual Studio из коробки
Или напишите плагин, складывающий в лог все call / jmp func

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

Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 июля 2014 19:34
· Личное сообщение · #3

А если в других отладчиках, например olly debugger, там можно это сделать?




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 29 июля 2014 19:59
· Личное сообщение · #4

[Requires OllyDbg v1.08 or later]
Load a process, right-click in the disassembly window and select Search For | All Intermodular Calls
In the window that pops up (which will have listed all imported APIs), right-click on it and select Set Log Breakpoint On Every Command
Set the Log Value Of Expression and Log Function Arguments to "Always".
Press OK, and you'll see all of the intermodular calls now with addresses highlighted in pink/purple, indicating log breakpoints.
Now simply run the program, then look in the Log window (View | Log) to see which API's got called, in which order, and what arguments were passed.

Взято здесь:
http://www.woodmann.com/forum/archive/index.php/t-7970.html

-----
Give me a HANDLE and I will move the Earth.


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

Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 июля 2014 20:55
· Личное сообщение · #5

А вот ещё вопрос, только не по теме...

когда в OllyDbg делаю RUN, отладчик ставится на паузу в модуле kernel32 после ntdll.RtlRaiseException...
потом Run-Run-Run и процесс уходит в terminated...

Это одно из средств антиотладки?

Как побороть?

Пытался менять в Debug Options->Exceptions флажки,
Ignore memory access violation in Kernel32 галочка стоит




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 30 июля 2014 09:59
· Личное сообщение · #6

who-e
Shift+F9 ?

-----
Stuck to the plan, always think that we would stand up, never ran.


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

Ранг: 34.6 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 30 июля 2014 13:09
· Личное сообщение · #7

можно написать небольшой скрипт для ollydbg



Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 30 июля 2014 16:55 · Поправил: who-e
· Личное сообщение · #8

plutos пишет:

[Requires OllyDbg v1.08 or later]
Load a process, right-click in the disassembly window and select Search For | All Intermodular Calls
In the window that pops up (which will have listed all imported APIs), right-click on it and select Set Log Breakpoint On Every Command
Set the Log Value Of Expression and Log Function Arguments to "Always".
Press OK, and you'll see all of the intermodular calls now with addresses highlighted in pink/purple, indicating log breakpoints.
Now simply run the program, then look in the Log window (View | Log) to see which API's got called, in which order, and what arguments were passed.



Не подходит, хотя и не пробовал... В Olly Debugger 2.01 search For -> ALL Intermodular Calls находит все Call-ы в dll(OLEAUT32, MSVCP100, MSVCR100, kernel32, ntdll, user32), а мне надо все call-ы приложения, по окну map могу определить в какой области памяти лежат нужные Call-ы...ну и как на все эти call повесить log breakpoints

решил окончательно перейти с OllyDbg 1.10 на OllyDbg 2.01

Там есть Trace->Set Protocol, флажок Call Destination, и запустить Run Hit Trace
Только вот проблема в 2.01, Это то что нужно? и это долго, быстрее нельзя как нибудь?

Вообще надо найти такой участок, где идёт обращение к строке, возможно в Юникоде, при вызове, которую я логирую, она,строка, сто пудово где-то да всплывет, только там 3600 call-ов и продолжает расти, хотя запустил только вот 30 сек назад...
функция делает выборку данных и отображает их в окне, дескриптор окна известен, создано в главном потоке, в окне вижу эти данные, то есть если функция после своего завершения не затирает данные, полученные и отображенные с помощью этой функции - могу ли я найти в памяти эти данные и как?
Или может можно как нибудь через винапи перехватить строки которые рисуются в окне?
Или есть какие нибудь ещё предложения? Если нужные подробности пишите

И Run hit trace Тоже не сработал, exceptions..->shift+F9->...shift+F9->...Terminated



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

Создано: 30 июля 2014 17:02 · Поправил: VodoleY
· Личное сообщение · #9

перечитал 3 раза.. не пойму че вы изобретаете? SetWindowText не(с вариациями)? строку в памяти найти и хардвар бряк на чтение этой строки поставить .. не? очень много зависит от того на чем присана прога. В кажом языке свои способы отрисовки диалогов
З.Ы, в .НЕТ свое.. в КьЮте.. свое..

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....


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

Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 30 июля 2014 17:14 · Поправил: who-e
· Личное сообщение · #10

Дело в том что исходников программы нет, вот и исследую, то есть мне надо найти все вызовы SetWindowText, ставить на них бряки и смотреть какие параметры передаются?

Известно, что программа написана в среде VisualStudio2005, или ATL или MFC - не известно, если знаете как определить - ответ в студию! exe весит 28,2 мбайта, название говорить не буду, а то топик ещё закроют или забанят)))...
Знаю что приложение предоставляет открытие COM-интерфейсы...
через которые я пишу dll - плагин, в нем мой messageBox и вызов функции с использованием предоставляемого COM-интерфейса...во время работы этой функции рисуется что то типа полосы загрузки, что мало меня волнует, интересует именно Какие строки рисует в окне этот метод COM-интерфейса



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 30 июля 2014 17:34
· Личное сообщение · #11

я тоже нихфига не понял!
who-e пишет:
если знаете как определить - ответ в студию!

--> Специально для таких как Вы <-- PeID, ProtectionID... На крайняк, посмотреть, какие сигнатуры IDA грузит и определить по названиями функций
who-e пишет:
exe весит 28,2 мбайта, название говорить не буду, а то топик ещё закроют или забанят)))...

а еще Archer найдет по ip и вычислит! И однажды ночью за Вами придут



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

Создано: 30 июля 2014 18:12 · Поправил: VodoleY
· Личное сообщение · #12

вобщем если честно я пасс... чем больше ТС обьяснет ТЗ тем меньше я понимаю че он хочет.. имхо.. 28МБ для студии.. это через чур жирно.. но всякое бывает.. я ВАМ пытался намекнуть.. что у каждого языка свои высокоуровневые функи, которые ресуют строки и вызывают потом уже виндовые (а могут дравтекстом и сами отрисовать).ИДА вам поможет во многом, отдетектит сигны, и может даже вашу функу.Вы просто видимо даже не понимаете ответов на ваш вопрос. Если у ВАС опыта настолько мало.. оформите запрос в Поиск специалистов.

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 30 июля 2014 20:12 · Поправил: who-e
· Личное сообщение · #13

Хорошо, если идти по пути рисования текста в окно..
я не знаю как реализовано в приложении...
Какие могут быть функции рисования текста в окне исходя из списка
Какие низкоуровневые функции используется в высокоуровневых функция вывода текста в окно?

Во вложении все executable modules


7c80_30.07.2014_EXELAB.rU.tgz - exec.txt




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 30 июля 2014 20:30 · Поправил: plutos
· Личное сообщение · #14

who-e пишет:
Какие могут быть функции рисования текста в окне


SetWindowText ?

User32.dll:
BOOL SetWindowText ( HWND hWnd, LPCTSTR lpString );

-----
Give me a HANDLE and I will move the Earth.


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

Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 30 июля 2014 20:59 · Поправил: who-e
· Личное сообщение · #15

Кто то говорил про DrawText, вероятно ли что она используется?
Eщё варианты?
Все ли высокоуровневые языки программирования для рисования в окне используют winapi то есть SetWindowText? Хочу сказать что это всё обёртки над winapi?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 30 июля 2014 21:17
· Личное сообщение · #16

гуи может вообще рисоваться одной функцией winapi,
а вся логика по управлению окнами итд скрыта в программе

хватит уже голову всем морочить, дураку понятно что ботовод или покерной кликер какой то




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

Создано: 30 июля 2014 21:25
· Личное сообщение · #17

Либо софт в студию, либо топик закрывается. Эти гадания и перечисления уже надоели. И своей работы явно маловато.



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

Создано: 31 июля 2014 11:13
· Личное сообщение · #18

who-e люди для начала СМОТРЯТ глазками на контрол. потом смотрят на СРЕДУ в которой гуи сделан. потом включают МОЗГ и исходя из этого ищут подходы. Что за поле чудес угадай мелодию по 2ум нотам

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 июля 2014 12:17
· Личное сообщение · #19

Archer пишет:
Либо софт в студию, либо топик закрывается.

Можете закрывать
Я ждал что люди помогут не конкретно с задачей, а советом

reversecode пишет:
а вся логика по управлению окнами итд скрыта в программе

Как устроена работа с окнами меня не интересует
Известно лишь что программы написана на Microsoft Visual C++,
Вот у меня и вопрос встаёт, обязательно ли должен быть вызов SetWindowText для отрисовки текста в окне,
либо есть альтернативы?

reversecode пишет:
хватит уже голову всем морочить, дураку понятно что ботовод или покерной кликер какой то

Нет, вы не угадали

VodoleY пишет:
who-e люди для начала СМОТРЯТ глазками на контрол. потом смотрят на СРЕДУ в которой гуи сделан. потом включают МОЗГ и исходя из этого ищут подходы. Что за поле чудес угадай мелодию по 2ум нотам

Что значит "СМОТРЯТ глазками на контрол"
Ну я посмотрел: окно как окно, в которое выводится текст,
повторюсь в приложении используются COM-интерфейсы для реализации собственных плагинов,
Вот я написал небольшой плагин, но открытые API не позволяют мне в dll-плагине извлечь нужные строки,
в этом плагине, я реализовал кнопку, при нажатии вызывается метод COM-интерфейса, и он, метод, рисует полосу загрузки в окне и в конце рисует строки которые мне нужно получить внутри плагина...
Вот ищу подход, к Вам вопрос тот же, про SetWindowText
Думаю можно немного модифицировать программку, сделав перед выводом текста (SetWindowText?), jump на мой кусок кода который будет эти строки в какую нибудь область памяти сохранять, вопрос осуществления задуманного ещё только ставится передо мной, практически ещё ничего не делал



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

Создано: 31 июля 2014 13:17 · Поправил: VodoleY
· Личное сообщение · #20

who-eбро.. ты совсем в танке? смотри.. буду говорить как делфист.. ТО куда отрисовывается твой текст.. может быть компонентом.. наследником от EditControla - тут SetWinsowtext ил GraphicControla- тут DrawText .. НИКТО не мешает рисовать прям на форме.. как на Canvas .. тот же DrawText НО конкретно в делфе АПИ функции обвернуты более высоким уровнем.. из VCL .. в MFC очень похоже но немножко по другому.. ТЫ не понимаю как это все работает.. ищиш черную кошку в черной комнате.. причем даже слушать не хош. сторонние компоненты.. для ускорения работы и отрисовки.. могут полностью перехватывать методы RepaintWindow и состоять из набора DRAW .. ГЛАЗКАМИ это знать как выглядять ШТАТНЫЕ компоненты и НЕШТАТНЫЕ и от этого плясать. КАК вариант посмотреть на импорт ТВОЕЙ проги.. и на удачу наставить бряки на апи.. которые в ТЕОРИИ могут выводить. рисовать текст.. НО ты даже незнаеш ЧЕМ это можно делать. погугли "способы вывода текста с++ Windows api ".. чтоли
ЗЫ Как устроена работа с окнами меня не интересует
ВООЩЕ порадовало

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





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

Создано: 31 июля 2014 13:28
· Личное сообщение · #21

who-e
Присоединяюсь к мнению Водолея, он прав. Я бы другими словами написал, но не буду особо. ))

Получше включи логику, поставь её на полную мощность и перечитай, что тебе писали!

who-e пишет:
В OllyDebugger не могу приаттачиться к процессу во время вызова MessageBox-а,

Мне вот это непонятно. Понимаю, это неглавная проблема, но всё же:
Стек смотрели?
Откуда вызов MessageBox, нашли?
Ставили за ним бряк? ))

-----
IZ.RU




Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 31 июля 2014 14:08
· Личное сообщение · #22

VodoleY пишет:
бро.. ты совсем в танке? смотри.. буду говорить как делфист.. ТО куда отрисовывается твой текст.. может быть компонентом.. наследником от EditControla - тут SetWinsowtext ил GraphicControla- тут DrawText .. НИКТО не мешает рисовать прям на форме.. как на Canvas .. тот же DrawText НО конкретно в делфе АПИ функции обвернуты более высоким уровнем.. из VCL .. в MFC очень похоже но немножко по другому.. ТЫ не понимаю как это все работает.. ищиш черную кошку в черной комнате.. причем даже слушать не хош. сторонние компоненты.. для ускорения работы и отрисовки.. могут полностью перехватывать методы RepaintWindow и состоять из набора DRAW .. ГЛАЗКАМИ это знать как выглядять ШТАТНЫЕ компоненты и НЕШТАТНЫЕ и от этого плясать. КАК вариант посмотреть на импорт ТВОЕЙ проги.. и на удачу наставить бряки на апи.. которые в ТЕОРИИ могут выводить. рисовать текст.. НО ты даже незнаеш ЧЕМ это можно делать. погугли "способы вывода текста с++ Windows api ".. чтоли
ЗЫ Как устроена работа с окнами меня не интересует
ВООЩЕ порадовало

Зря ты перед ним распинался.Он нихуа не знает один хер.
DenCoder пишет:
Мне вот это непонятно. Понимаю, это неглавная проблема, но всё же:
Стек смотрели?
Откуда вызов MessageBox, нашли?
Ставили за ним бряк? ))

Вы нагрузили человека сложными словами, теперь он ничего не ответит более, осознав никчемность

-----
TEST YOUR MIGHT




Ранг: 0.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 июля 2014 14:54 · Поправил: who-e
· Личное сообщение · #23

DenCoder пишет:
Мне вот это непонятно. Понимаю, это неглавная проблема, но всё же:
Стек смотрели?
Откуда вызов MessageBox, нашли?
Ставили за ним бряк? ))


MessageBox я сам писал в dll которая грузится во время запуска приложения, думаю можно запомнить виртульный адрес, но ведь с каждым новым запуском адрес может отличаться от него?

Когда появляется MessageBox - attach:
Call stack of thread 00000564, item 0
Address=03DEFFCC
Stack=7C950018
Procedure / arguments=ntdll.DbgBreakPoint
Called from=ntdll.7C950013
Frame=03DEFFF4

Потом Run:
Call stack of thread 00000AE4, item 0
Address=032FFD3C
Stack=00AB6122
Procedure / arguments=kernel32.RaiseException
Called from=****.00AB611C
Frame=032FFD38
Call stack of thread 00000AE4, item 1
Address=032FFD40
Stack=E06D7363
Procedure / arguments= ExceptionCode = E06D7363
Call stack of thread 00000AE4, item 2
Address=032FFD44
Stack=00000001
Procedure / arguments= ExceptionFlags = EXCEPTION_NONCONTINUABLE
Потом после нескольких Run/Shift+F9 без разницы: terminated

Это в OllyDbg 1.10

В OllyDbg 2.01 паузы нет, ставлю на паузу перехожу в нужный thread, call stack, show caller messagebox,
перехожу к этому участку кода и ставлю бряки...


VodoleY пишет:
who-eбро.. ты совсем в танке? смотри.. буду говорить как делфист.. ТО куда отрисовывается твой текст.. может быть компонентом.. наследником от EditControla - тут SetWinsowtext ил GraphicControla- тут DrawText .. НИКТО не мешает рисовать прям на форме.. как на Canvas .. тот же DrawText НО конкретно в делфе АПИ функции обвернуты более высоким уровнем.. из VCL .. в MFC очень похоже но немножко по другому.. ТЫ не понимаю как это все работает.. ищиш черную кошку в черной комнате.. причем даже слушать не хош. сторонние компоненты.. для ускорения работы и отрисовки.. могут полностью перехватывать методы RepaintWindow и состоять из набора DRAW .. ГЛАЗКАМИ это знать как выглядять ШТАТНЫЕ компоненты и НЕШТАТНЫЕ и от этого плясать. КАК вариант посмотреть на импорт ТВОЕЙ проги.. и на удачу наставить бряки на апи.. которые в ТЕОРИИ могут выводить. рисовать текст.. НО ты даже незнаеш ЧЕМ это можно делать. погугли "способы вывода текста с++ Windows api ".. чтоли
ЗЫ Как устроена работа с окнами меня не интересует
ВООЩЕ порадовало


Спасибо, буду гуглить

VodoleY пишет:
слы.. а там случайно.. протекторов никаких не висит.. типа антиатача... если так.. то я буду рыдать.. угадай мелодия радует

Может быть и стоит) Не в курсе, вот Hit Trace пытался делать с SetProtocol, приложение завершилось..



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

Создано: 31 июля 2014 15:02
· Личное сообщение · #24

слы.. а там случайно.. протекторов никаких не висит.. типа антиатача... если так.. то я буду рыдать.. угадай мелодия радует

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





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

Создано: 31 июля 2014 15:06
· Личное сообщение · #25

who-e пишет:
Можете закрывать

Спасибо, что разрешил.


 eXeL@B —› Вопросы новичков —› Отладка в Visual Studio 2010
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати