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

 eXeL@B —› Основной форум —› использование функции распаковки игры
Посл.ответ Сообщение

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

Создано: 12 марта 2005 14:05
· Личное сообщение · #1

Подскажите пожалуста если кто знает: Я хочу воспользываться фукнцией распакови игры , порядок передачи данных в функцию я знаю , я написал DLL присоеденил ее но вот когда
я пытаюсь поюзать функцию распаковки игры из своей DLL
происходит сбой!!!
адресс нужной мне функции 0x467690

typedef int (*unp)(unsigned char*,unsigned int,unsigned char*,unsigned int*,unsigned int);
unp Unpaker = (unp)0x467690;

int 0x467690 (u_char*,u_int,u_char*,u_int*,u_int)

я так понимаю когда инициализируется DLL она находится в адресном пространстве процесса игры , но вот почему то вызвать функцию по указанному выше адресу неполучается

может я не правельно использую адресс???может его както надо еще вышитывать ??? если кто знает подскажите плиз




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 13 марта 2005 01:41
· Личное сообщение · #2

тебе нужно будет вручную вызывать процедуру распаковки
т.е. сначала пнуть в стек все параметры, а потом делать
call UnpProcAddr
в данном случае UnpProcAddr=0467690h

типа
mov eax, 0467690h
push paramn
...
push param1
call eax

-----
EnJoy!




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

Создано: 13 марта 2005 02:49
· Личное сообщение · #3

Все оказалось значительно сложнее , секция видимо запакованна , и получается что я пытаюсь вызвать запакованный код вотон и выдавал сбои

использовать длл при ее инициализации не подходит , екзешник то остается запакованный в это время , здесь надо чтото другое наверное думать




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 13 марта 2005 03:24
· Личное сообщение · #4

ты б ссылку на прогу кинул
а то так вслепую не очень удобно ;)
ну или хотя бы exe (чтоб пускался)

-----
EnJoy!




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

Создано: 13 марта 2005 03:44
· Личное сообщение · #5

Спасибо , за жедание помочь я уже разобрался , пришлось распаковывать с помощью PS2 (я просто под нее уже эту игру сделал) , а вместо запаковки намутил пару строк чтото типа
memcpy только с выборкой по сигнатуре




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 13 марта 2005 04:26
· Личное сообщение · #6

т.е. ты напрямую копируешь распакованные данные?
и как процес на это реагирует?

-----
EnJoy!




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

Создано: 13 марта 2005 04:33
· Личное сообщение · #7

Тут запаковка хитрая , по блокам , но распакованный блок всегда равен 0x4000 и последний блок по любому не запакован!!!
вот я и ставлю свою сигнатуру перед распакованным блоком ,
пришлось конечно екзе переделать , чтобы оно могло реализовать псевдо memcpy (на асме писал , вместо немецкого текста)




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 13 марта 2005 06:28
· Личное сообщение · #8

интересно... а что это за прога?
кстати, увидел твой вопрос про dll'ку (её добавление к проге)
так вот проще это сделать в Lord PE (Directories -> Import table -> add import)

-----
EnJoy!




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

Создано: 13 марта 2005 11:33
· Личное сообщение · #9

Это игра Constantine (PC,XBOX,PS2)



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

Создано: 13 марта 2005 11:34
· Личное сообщение · #10

Это игра Constantine (PC,XBOX,PS2)


 eXeL@B —› Основной форум —› использование функции распаковки игры
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати