Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Assembler

Страница: 1 |

 

  Вопрос: Несколько вопросов Добавлено: 03.11.04 15:22  

Автор вопроса:  freeloader  | Web-сайт: freeloader.folder-pro.net | ICQ: 50804884 
Сейчас пытаюсь исследовать программу Zamok, определено, она написана на Delphi, также известно куда она пишет пароли, но про подмену паролей следует забыть по определенным причинам, известно что программа нередко обращается к АПИ функциям, в частности к RegQueryValueEX, вопрос в том, что я немогу определить то место где это вызывается, ставлю бряк в OllyDbg вот так: "bp RegQueryValueEx", а она мне в ответ "Unknown identifier", я что то нетак делаю?
Следующий вопрос, допустим получится определить то место, как это место можно будет пропатчить? чем пользоваться? и каким образом можно будет собрать это все в старый добрый EXE, но уже поменявший немножечко свою структуру?
cresta, помню ты говорил, что таким не занимался, но также помню, что ты как то занимался программой на VC++, так что отзовись HELP :)

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 03.11.04 17:53
Вообще-то я делал так: загрузил в Olly программу, далее давишь правой мышью на левом верхнем окне (где написано CPU - Main Thread) и в менюшке выбираю Search for > Name in all modules. Появится окошко со всеми ф-циями которые вызываются в программе. Найди там RegQueryValueEX , которая вызывается из твоего модуля, выдели эту строку и правой мышью выбери в меню Toggle BreakePoint или нажми F2. И когда из твоего модуля будет вызываться эта ф-ция, программа будет останавливаться.

Чтобы пропатчить место, которое нужно изменить, в том же окне CPU - Main Thread двойной клик на строке, которую хочешь изменить. Выскочит окошко, введёшь туда свою замену и дави Assemble.
Только смотри, длина заменяемого куска должна равняться длине заменяющего, иначе нарушится вся адресация.

Потом опять правой мышью вызывай меню и выбери Copy to executable > All modifications. там тебе предложат переписать существующий модуль и т.д. и т.п. Думаю дальше разберёшься.

Ответить

Номер ответа: 2
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #2
Добавлено: 04.11.04 04:45
2. Либо переписывать экзешник, либо размеры операнда в экзешнике и значения для патча должны иметь одинаковую длину. А что конкретно ты собираешся патчить? По какому адресу и что там находится?

Ответить

Номер ответа: 3
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #3
Добавлено: 04.11.04 11:05
Конкретно мне интересует место, где будет сравниваться пароль введенный мной с паролем который выдернут из ***, я так понимаю что там будет использоваться условный переход, возможно стоит попробовать сделать его безусловным(думаю адресация не будет нарушена).
Зы разобрался в чем была прошлая проблема я не дописал Ansi, писал RegQueryValueEx, а надо бы: RegQueryValueExA :)
теперь мне надо определить когда он будет сравниваться, есть в голове мысля, поставить БрейкПоинт на GetWindowTextA, но блин вся проблема, то что в той проге вызовов этой функции дохрена и больше и у меня не хватило терпения дождаться конца, есть более простой способ? (хотя с другой стороны куда уже проще...)
Всем спасибо за ответы :)

Ответить

Номер ответа: 4
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 04.11.04 11:51
Ну там может быть ещё и GetDlgItemText...
А вообще, ставь сначала брейкпоинты на вызовы ф-ции, которые из твоего модуля идут. А то GetWindowText может вызываться не только из твоего кода, но и из модулей, которые программа подгрузила (ну там разные dll, к которым программа обращается при своей работе)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам