Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2009, 13:31   #1
Tihon
Пользователь
 
Регистрация: 18.12.2007
Сообщений: 40
По умолчанию Там, где кончается триал

Товарищи, вот есть у меня демо-программа с триальной dll.
И есть два куска листингов трассировки, полученных Olly при почти одинаковых условиях: разница только та, что программа выполнялась сначала при живом триале (24 дня), а потом, - при просроченном (искусственно, переносом даты на месяц вперед).

В длл-ке присутвует некая функция GetInterface, внутри которой программа выкидывает окно сообщения - либо количество дней до конца, либо - "Trial expired".
После загрузки dll делаем бряк, переходим на просмотр той самой dll, а потом в ней ставим останов на начало GetInterface.
Теперь от бряка начинаю трассировать с записью лога, имея в виду получить те самые листинги, считая, что к бряку оба раза приходим одинаково. Ну, или почти одинаково...

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

Вот начальные фрагменты - приаттачены. Я отметил отличия.

Маленькая разница начинается на строке 143...
Кто посмотрит - скажите, что она означает?

БОЛЬШАЯ разница - на строке 173. Здесь я припух.. Для меня ниоткуда не следует, что в одном случае -
Код:
01C10000 Main     JMP SHORT 01C10005
, а в другом -
Код:
01C10000 Main     JMP SHORT 01C10004
!!! Я бы понял, - будь здесь регистр... или адрес памяти...
Но тут конкретный EIP. А отсюда программа шустро бежит в разные стороны...

Объясните, если возможно, как это получается?

ЗЫ Интересно, что Олька показывает код начала процедуры 01С10000 по разному, то "JMP SHORT 01C10003", то "JMP SHORT 01C10004", - столько, сколько раз загрузишь. А при ручной трассировке тоже чудеса. EIP, на которые ссылается этот JMP, часто просто нет в окне...
Вложения
Тип файла: txt TrialExp.txt (9.8 Кб, 149 просмотров)
Тип файла: txt TrialNoExp.txt (10.1 Кб, 154 просмотров)

Последний раз редактировалось Tihon; 20.08.2009 в 13:54.
Tihon вне форума Ответить с цитированием
Старый 20.08.2009, 14:49   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Код:
01C10000 Main     JMP SHORT 01C10005/4
01C10005 Main     PUSH EAX
01C10006 Main     PUSHFD
Почему после этого участка разный код? Генерируется динамически.
Ставь memory-on-write бряк @01C10000 и смотри кто и откуда туда пишет.

Разное содержимое регистров @7C8092C7 - видимо результат вызова предыдущей функции (CALL kernel32.7C8092C0 какая-то, ctrl+A нажми, если в olly, а то имён нет, нифига не понятно)

И это... Прикрой ольку чем-нибудь, HideOD например.
пыщь

Последний раз редактировалось JTG; 20.08.2009 в 14:59.
JTG вне форума Ответить с цитированием
Старый 20.08.2009, 16:48   #3
SoundMan
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 27
По умолчанию

Код:
01C10000 Main     JMP SHORT 01C10005
01C10005 Main     PUSH EAX
Вообще по этим двум командам можно сказать, что программа чем-то запакована, так как джамп - это просто мусор.

Код:
00A996FC Main     PUSH EAX
00A996FD Main     PUSH 0
00A996FF Main     PUSH 0
00A99701 Main     CALL DWORD PTR DS:[AEA1E4]
Вот это больше похоже на переадресовочную талицу импорта. (Т.е. в данном случае по адресу AEA1E4 будет лежать истинный адрес функции).
Предлагаю пропустить программу через PEiD, а потом уже будем думать.
SoundMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вечный триал косперского. uberchel Софт 0 11.08.2009 02:44
Помогите плз в программе надо найти чей номер телю кончается на 10 и посчитать их Бубальгум Помощь студентам 0 05.05.2009 16:12
Иконка в системном трее (там, где часики) Македонский Win Api 6 22.12.2008 18:03
КАК поместить ИКОНКУ программы в правый нижний угол панели(там где пуск)??? micaell Общие вопросы Delphi 5 21.02.2007 19:58