purebasic.info

PureBasic forum
Текущее время: Пт апр 27, 2018 9:34 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re:
СообщениеДобавлено: Вт фев 25, 2014 9:16 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Сб июл 18, 2009 8:25 am
Сообщений: 810
Откуда: Нерезиновая
Благодарил (а): 21 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
puremaster писал(а):
подправить эти байты через ключи /asm /reasm.


Я для ехе руками обычно менял в скомпилированном файле, а вот тут столкнулся с dll, там "малой кровью" не обойтись...

Изображение

Все перепробовал, и значения менял и безусловку, в конец кода и обратно прыгал, падает программа и все тут, странно как-то.
Есть проверенный способ для библиотек?


Последний раз редактировалось Volkoff Вт фев 25, 2014 12:12 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: плагин olly
СообщениеДобавлено: Вт фев 25, 2014 12:10 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11108
Благодарил (а): 4 раз.
Поблагодарили: 395 раз.
Наверное нужно попросить Фреда чтобы добавил возможность правки асм кода для dll. С текущими ключами компилятора, это вроде невозможно.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: плагин olly
СообщениеДобавлено: Вт фев 25, 2014 12:18 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Сб июл 18, 2009 8:25 am
Сообщений: 810
Откуда: Нерезиновая
Благодарил (а): 21 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Ну постфактум всегда можно поправить код, у меня на ассемблере просто не достаточно креативное мышление :)

Вот допустим, если сделать так:

Изображение

То в принципе работает, но с моей конкретной либой в конкретном случае, почему-то валится.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: плагин olly
СообщениеДобавлено: Вт фев 25, 2014 3:14 pm 
Не в сети
профессор

Зарегистрирован: Вт янв 13, 2009 2:41 pm
Сообщений: 370
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
Пункты репутации: 8
Ну можно в опциях линкера просто поменять точку входа.
Код:
Код:
1
2
3
4
5
6
7
8
9
!public _new_entry
!_new_entry:
!PUSH EAX
!MOV DWORD [ESP], _DLLEntryPoint@12
!RET
 
ProcedureDLL AttachProcess(Instance)
  MessageRequester("", "")
EndProcedure

И в опциях линкера указать
Код:
1
/ENTRY:_new_entry



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: плагин olly
СообщениеДобавлено: Вт фев 25, 2014 3:56 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11108
Благодарил (а): 4 раз.
Поблагодарили: 395 раз.
Не проще написать !Call _DLLEntryPoint@12?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: плагин olly
СообщениеДобавлено: Вт фев 25, 2014 7:41 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Сб июл 18, 2009 8:25 am
Сообщений: 810
Откуда: Нерезиновая
Благодарил (а): 21 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Fox писал(а):
Ну можно в опциях линкера просто поменять точку входа.

После этого даже Олька не кушает такую dll
В коде нужно что-то еще заменить? (нужно для х86)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: плагин olly
СообщениеДобавлено: Вт фев 25, 2014 10:04 pm 
Не в сети
профессор

Зарегистрирован: Вт янв 13, 2009 2:41 pm
Сообщений: 370
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
Пункты репутации: 8
Там Пурик косячок порит. В общем он асм вставку тулит в PB_DllInit, в итоге получается зацикливание. В общем решил проблему, влепив RET (выход из PB_DllInit процедуры) перед новой точкой входа. Можно его и не ставить, если будет стоять переход !jmp next_code.В принципе можно новую секцию создать и в неё точку входа влепить, но это будет чёрти что, если там полезного кода не будет.
В общем вот пример:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ProcedureDLL AttachProcess(Instance)
  MessageRequester("", "AttachProcess")
EndProcedure
 
MessageRequester("", "PB_DllInit")
 
!jmp next_code
!public _new_entry
!retn               ; Выход из PB_DllInit
!_new_entry:
; Тут вставляем мусор, главное стек не попортить
!jmp _DLLEntryPoint@12
 
!next_code:
MessageRequester("", "Resume PB_DllInit")



Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB