Посл.ответ |
Сообщение |
Ранг: 24.4 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 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.47↘0.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.02↘0 Статус: Участник
|
Создано: 13 марта 2005 02:49 · Личное сообщение · #3
Все оказалось значительно сложнее , секция видимо запакованна , и получается что я пытаюсь вызвать запакованный код вотон и выдавал сбои
использовать длл при ее инициализации не подходит , екзешник то остается запакованный в это время , здесь надо чтото другое наверное думать
| Сообщение посчитали полезным: |
Ранг: 605.2 (!), 341thx Активность: 0.47↘0.25 Статус: Модератор Research & Development
|
Создано: 13 марта 2005 03:24 · Личное сообщение · #4
ты б ссылку на прогу кинул
а то так вслепую не очень удобно ;)
ну или хотя бы exe (чтоб пускался)
----- EnJoy! | Сообщение посчитали полезным: |
Ранг: 24.4 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 13 марта 2005 03:44 · Личное сообщение · #5
Спасибо , за жедание помочь я уже разобрался , пришлось распаковывать с помощью PS2 (я просто под нее уже эту игру сделал) , а вместо запаковки намутил пару строк чтото типа
memcpy только с выборкой по сигнатуре
| Сообщение посчитали полезным: |
Ранг: 605.2 (!), 341thx Активность: 0.47↘0.25 Статус: Модератор Research & Development
|
Создано: 13 марта 2005 04:26 · Личное сообщение · #6
т.е. ты напрямую копируешь распакованные данные?
и как процес на это реагирует?
----- EnJoy! | Сообщение посчитали полезным: |
Ранг: 24.4 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 13 марта 2005 04:33 · Личное сообщение · #7
Тут запаковка хитрая , по блокам , но распакованный блок всегда равен 0x4000 и последний блок по любому не запакован!!!
вот я и ставлю свою сигнатуру перед распакованным блоком ,
пришлось конечно екзе переделать , чтобы оно могло реализовать псевдо memcpy (на асме писал , вместо немецкого текста)
| Сообщение посчитали полезным: |
Ранг: 605.2 (!), 341thx Активность: 0.47↘0.25 Статус: Модератор Research & Development
|
Создано: 13 марта 2005 06:28 · Личное сообщение · #8
интересно... а что это за прога?
кстати, увидел твой вопрос про dll'ку (её добавление к проге)
так вот проще это сделать в Lord PE (Directories -> Import table -> add import)
----- EnJoy! | Сообщение посчитали полезным: |
Ранг: 24.4 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 13 марта 2005 11:33 · Личное сообщение · #9
Это игра Constantine (PC,XBOX,PS2)
| Сообщение посчитали полезным: |
Ранг: 24.4 (новичок) Активность: 0.02↘0 Статус: Участник
|
Создано: 13 марта 2005 11:34 · Личное сообщение · #10
Это игра Constantine (PC,XBOX,PS2)
| Сообщение посчитали полезным: |