Сейчас на форуме: user99, _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых)

 eXeL@B —› Основной форум —› Вопрос по API
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение

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

Создано: 08 октября 2005 08:11
· Личное сообщение · #1

File Monitor показывает, что прога открывает определенный файл(OPEN), а потом закрывает его(CLOSE).
Ставлю бряк в SoftIce на функцию OpenFile, но он не срабатывает, хотя прога точно обращается к файлу(для проверки его наличия). Есть какие-то другие функции для открытия файла или это какой-то глюк?




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 12 октября 2005 13:03
· Личное сообщение · #2

Stranger
Да, будь внимательнее, я же писал, что bpx устанавливает бряк только в исполняемом модуле, а bp уже в системных либах.
К тому же, возможны другие варианты мессажбокса (MessageBoxW, MessageBoxIndirectA,MessageBoxIndirectW)

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




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

Создано: 14 октября 2005 04:31
· Личное сообщение · #3

можно поставить на bp MessageBoxTimeoutA или W - не ошибёшься




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 14 октября 2005 04:41
· Личное сообщение · #4

Gelios
А что еще за MessageBoxTimeout ? Расскажи поподробнее, чет не слышал о таком... (и в MSDN нету такого)

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




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

Создано: 14 октября 2005 17:40
· Личное сообщение · #5

Основная часть проги находится в Dll(почти вся прога). И при отладке в Ольке адрес выполняемой команды теряется, когда начинает рулить Dll и прога уже пашет отдельно. Собственно вопрос: как этого избежать?




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 14 октября 2005 19:09
· Личное сообщение · #6

Stranger
Чего именно избежать?

Исследуй либу отдельно в Ольке

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




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

Создано: 14 октября 2005 20:09
· Личное сообщение · #7

4kusNick
Избежать отключения трасировки. Как только начинают выполняться функции Dll, я уже не могу отлаживать прогу!



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

Создано: 15 октября 2005 00:18
· Личное сообщение · #8

Кто-нибудь подскажет для чего нужна API-функция InterlockedExchange()? Только не надо общих ответов как в справочнике, типа "обменивает пару 32-битных значений". Она защищает переменную от изменения другим процессом??? Или я что-то не так понял. В моей ситуации она используется при проверке метки тома, после GetVolumeInformation.



Ранг: 51.9 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 15 октября 2005 11:29
· Личное сообщение · #9

Функции семейства InterlockedХХХ используются как ты и написал для многопоточных приложений (обмен, инкремент, декремент...), но также ещё и для организации спин-блокировок. Ты уверен что там нет именно спин-блока ?



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

Создано: 15 октября 2005 16:42 · Поправил: Stranger
· Личное сообщение · #10

Barakuda
А что такое спин-блок?
Вообще, эта функция используется прогой довольно часто. И до вызова GetDriveTypeA() тоже.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 15 октября 2005 23:02
· Личное сообщение · #11

Stranger
Во-первых, еще раз повторяю, ты можешь отлаживать библиотеку отдельно, просто кинув ее на форму Ольки, например, или, если хочешь, чтобы при переходе на DLL ты все еще имел возможность отлаживать прогу, попробуй в настройках Ольки поставить (Events) Break on new module (DLL).

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




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

Создано: 16 октября 2005 18:56
· Личное сообщение · #12

Еще один вопрос:
Как поймать API-функцию если она не вызывается открыто, т.е. я знаю что она вызывается (sice ее брякает), но в Ольке в списке вызываемых функций нет ничего похожего на нее.
P.S.
Функция GetDlgMessageA



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 16 октября 2005 19:08
· Личное сообщение · #13

Stranger
Ну ё. Говорят же ставишь cmdbar, пишешь:
bp GetDlgMessageA

-----
Всем привет, я вернулся




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

Создано: 16 октября 2005 20:40
· Личное сообщение · #14

Bitfry
Пишет, что Unknow Identifier. Нужно загрузить системные Dll? Если да, то как?



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 16 октября 2005 21:11
· Личное сообщение · #15

Stranger
Чё-то я не знаю такой функции... И MS тоже

-----
Всем привет, я вернулся




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

Создано: 16 октября 2005 21:51
· Личное сообщение · #16

Stranger пишет:
Функция GetDlgMessageA

Нет такой функции



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

Создано: 16 октября 2005 21:54
· Личное сообщение · #17

Stranger пишет:
Пишет, что Unknow Identifier

Это значит, что такая ф-ция не импортируется, соотв. бряк на неё не ставится.



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

Создано: 16 октября 2005 22:52
· Личное сообщение · #18

Никто не знает такой функции...
GetDlgMessageA - это ее кодовое название! А настоящее имя - GetDlgItemTextA.



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

Создано: 16 октября 2005 22:54 · Поправил: Stranger
· Личное сообщение · #19

RideX пишет:
Это значит, что такая ф-ция не импортируется, соотв. бряк на неё не ставится.

Это я и сам понял. Как сделать так, чтобы ставился?



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 16 октября 2005 23:07
· Личное сообщение · #20

RideX пишет:
GetDlgMessageA - это ее кодовое название! А настоящее имя - GetDlgItemTextA.


Stranger пишет:
Это я и сам понял. Как сделать так, чтобы ставился?

Bitfry пишет:
Ну ё. Говорят же ставишь cmdbar, пишешь:
bp GetDlgMessageA

Только имя раскодируй

-----
Всем привет, я вернулся




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

Создано: 17 октября 2005 16:59
· Личное сообщение · #21

Stranger, а чё за прога то?



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

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

Bitfry пишет:
Ну ё. Говорят же ставишь cmdbar, пишешь:
bp GetDlgMessageA

Да так, вообще-то, и делаю.



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

Создано: 17 октября 2005 17:40
· Личное сообщение · #23

Stranger пишет:
Как сделать так, чтобы ставился?

Открывай user32.dll, ищи эту ф-цию и ставь бряк в .dll или используй SoftIce.



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

Создано: 18 октября 2005 19:38
· Личное сообщение · #24

Тут некоторые умные люди расхваливали мне Ольку и настоятельно советовали попробовать ее на деле.
НО!!! Когда я попробовал исследовать с ее помощью проги, ОКАЗАЛОСЬ, что бряки в ней срабатывают через РАЗ(и на вызов API-функций, и на memory access). А также бывает, что вызовы функций иногда не комментируются в удобной форме и даже не считаются за вызовы (push esi- адрес API-ф.; call esi), хотя в этом месте надо брякнуть.
Внимание, вопрос:
Я использую не ту версию Ольки(1.10)?
Не установил какой-то Update?
На нее воздействует sice?
Или еще какой-то Bug?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 18 октября 2005 20:10
· Личное сообщение · #25

Stranger ïèøåò:
ОКАЗАЛОСЬ, что бряки в ней срабатывают через РАЗ(и на вызов API-функций, и на memory access). А также бывает, что вызовы функций иногда не комментируются в удобной форме и даже не считаются за вызовы (push esi- адрес API-ф.; call esi), хотя в этом месте надо брякнуть.

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



Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 18 октября 2005 20:50
· Личное сообщение · #26

Stranger пишет:
ОКАЗАЛОСЬ, что бряки в ней срабатывают через РАЗ

А может ты все-таки попутал BP и BPX? Если ставить бряк в начале самой АПИ, то через раз не может срабатывать (ну разве-что если ты там прот какой-то копаешь). А вот если на вызовы в самой проге(BPX), то может.
Надо ставить BP, а потом Execute till return (ctrl-F9), и окажешся как раз в том месте, откуда был вызов, в том числе и Call esi. А вообще-то правильно Ara пишет:
давай линк на небольшую прогу и конкретные примеры срабатывания бряка "через раз".


-----
Research is my purpose




Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 18 октября 2005 20:56
· Личное сообщение · #27

Stranger, приятель, не спиши.
Поверь, по части внятности и читабельности кода, Olly куда как лучше.
Главные преимущества Оли (то чего мне в SI не хватает):
0. Комментарии к параметрам API.
1. Удобная навигация по коду.
2. Подсветка.
3. Буфер обмена.
4. Наглядность стека.
5. Куча мелочей, которых просто не упомнишь
И естественно плаги.

Вот попробуй, найди в SI обращения к конкретной строчке кода.

> бряки в ней срабатывают через РАЗ(и на вызов API-функций, и на memory access).

Если, допустим, доступ к памяти происходит из другого модуля, то ставь hardware bp.
И ещё раз, не путай в cmdbar bp и bpx.

> А также бывает, что вызовы функций иногда не комментируются в удобной форме

Ну, ну. А SoftIce в этом плане лучше? =))).
Вот уж по части авто-комментариев, Олька на голову выше.

Stranger пишет:
хотя в этом месте надо брякнуть.

Ну, я же сказал.
Ставишь CommandBar, пишешь bp и получаешь бряк на первую команду функции.

Ты вообще читать умеешь?
Так прочти help от Olly (русский перевод в разделе скачать).

-----
Всем привет, я вернулся




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

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

Да умею я читать, умею. То, что Олька намного удобнее я заметил. bp и bpx я вообще не использовал.
Просто выбрал в списке "Intermodular calls" нужную мне функцию и задал бряк на каждом ее вызове.
В первый раз, когда я енто сделал все работало Ok(просто супер). Но потом (по-моему поставил еще один бряк вручную(double click)) все стало работать по-другому(как я уже описывал). Выбирал и анализ кода, и бряки все заново устанавливал по выше описаной схеме - бестоляр.
Такие вещи не очень радуют, в то время как сайсе все срабатывает железно(если уж поставил бряк - так поставил!).
А прога - классический training flashget. Функция RegQueryValueExA .




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 18 октября 2005 21:41
· Личное сообщение · #29

Stranger ïèøåò:
Просто выбрал в списке "Intermodular calls" нужную мне функцию и задал бряк на каждом ее вызове

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



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

Создано: 19 октября 2005 11:21
· Личное сообщение · #30

Bitfry пишет:
Вот попробуй, найди в SI обращения к конкретной строчке кода.

bpm на адрес. Но по фэйсу, да, Olly удобнее




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 19 октября 2005 12:33
· Личное сообщение · #31

Stranger
Еще Олька сохраняет все бряки в каждой проге, попробуй переименовать имя проги, или найди и удали в папке Olly\UDD\файл,кот.тыотлаживал.udd

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.



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


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