Сейчас на форуме: Slinger, Rio (+5 невидимых)

 eXeL@B —› Основной форум —› Рипнуть ф-цию ?
. 1 . 2 . >>
Посл.ответ Сообщение


Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 11 июля 2006 23:13
· Личное сообщение · #1

Реверсирую одну прогу. Возникла нужда вставить рипнутую ф-цию. И - облом.
0057FA5C /$ 55 PUSH EBP ;
0057FA5D |. 8BEC MOV EBP, ESP
0057FA5F |. 83C4 F8 ADD ESP, -8
0057FA62 |. 8955 F8 MOV [LOCAL.2], EDX ; ntdll.KiFastSystemCallRet
0057FA65 |. 8945 FC MOV [LOCAL.1], EAX ; unpacked.00583F34
0057FA68 |. A1 14985800 MOV EAX, DWORD PTR DS:[589814]------>>>>>> ВОТ ЭТО
0057FA6D |. 8B00 MOV EAX, DWORD PTR DS:[EAX]
0057FA6F |. B2 01 MOV DL, 1
0057FA71 |. E8 BE70EFFF CALL unpacked.00476B34
0057FA76 |. 59 POP ECX ; unpacked.00584404
0057FA77 |. 59 POP ECX ; unpacked.00584404
0057FA78 |. 5D POP EBP ; unpacked.00584404
0057FA79 \. C3 RETN

Этот адрес идет в DATA. Ф-ция вызывает свое окно. Данные всегда одни и теже - 9CDAFD. Чо с этой хренью можно сделать? Или можно долго и нудно искать и нихрена не найти?



Ранг: 160.9 (ветеран), 1thx
Активность: 0.050
Статус: Участник

Создано: 11 июля 2006 23:43
· Личное сообщение · #2

Ищи где эти даные инициализируються и добовляй кусок того кода тогда все должно норм быть.



Ранг: 172.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 12 июля 2006 00:43
· Личное сообщение · #3

ну да , либо просто замени на текуЩее содержание я4ейки памяти в момент обращения к ней

-----
HOW MUCH BLOOD WOULD YOU SHED TO STAY ALIVE




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

Создано: 12 июля 2006 01:15
· Личное сообщение · #4

А чё недано заюзать кульную тулзу TMG Ripper Studio?




Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 12 июля 2006 05:39
· Личное сообщение · #5

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



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 12 июля 2006 06:10
· Личное сообщение · #6

Если функция использует какие-то переменные, то остаётся:
1) искать в дизассемблере (ida - лучший) место, где они принимают то значение, которое используется в функции
2) загрузить в отладчик (я предпочитаю SoftIce) и посмотреть значения, которые данные переменные имеют при проходе через функцию
Только я не совсем правильно понял вопрос.
Если функцию создаёт своё окно (а что ещё за "своё окно"), то должен быть какой-то код, который передаёт Windows какую-нибудь ещё информацию (дескрипторы и т.п.), без которой окно создано быть не может. То есть надо узнать с какого адреса идёт переход сюда, а потом добавить необходимый код. Значит, нужно bpm.
На счёт "долго и нудно искать и никогда не найти" - зависит от опыта и желания.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 12 июля 2006 22:04
· Личное сообщение · #7

Эта ф-ция юзается при клике на батон "New project". Потом вылазит форма создания проекта. Т.е - не стандартное виндовское окно. Тот кол ведет из ф-ции в хрен знает какие дебри, где уже вызаваются конкретные апи, передаются хендлы и т.д.
Ессно я пробовал подставлять данные. Прога вылетает где-то на третьем уровне подфункций.
Код из полной, но старой версии, и надо вставить в новую версию демки. В демке всех нужных ф-ций нет напрочь. Я вот и думаю, что может для демки 9CDAFD - нихрена не значит? Потому как инициализировать нечего, данных нет?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 12 июля 2006 22:38
· Личное сообщение · #8

Nitrogen пишет:
а в каком месте она кульная? дебильная поделка какая-то, ни разу не помогла, в отличии от иды

Ага. Гамно тулза. Нормально рипает только простенький код, который из иды можно скомпилить. Чуть посложнее - и пипец.




Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 13 июля 2006 07:05
· Личное сообщение · #9

stahh
ах вон тебе это зачем. забудь, не получится у тебя




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 13 июля 2006 20:23
· Личное сообщение · #10

Nitrogen
А если всю секцию прикрутить? Кста, тут проблемка. Добовляю новую секцию прога не пашет. Выскакивает окно, что "программа не является приложением Win32". Вроде все правильно делаю - а ни хрена не получается.




Ранг: 124.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 13 июля 2006 20:31
· Личное сообщение · #11

stahh
а адреса всех апишек и прочего потом руками будешь править?
да гон это, нихрена не выйдет



Ранг: 74.4 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 13 июля 2006 20:35
· Личное сообщение · #12

Подправь значение SizeOfImage если не поможет возьми просто PEtools там Tools->Rebuild Pe
И будет те счастье




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 13 июля 2006 20:55
· Личное сообщение · #13

WoLFeR
Ну я ж не совсем ламер. Не пашет.
2ALL
Интересуют такие темы: Расширение секции кода, Добавление ресурсов, Добавление секций(если осталась секция прота). Если у кого есть толковые статьи - приатачьте или дайте линки.




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 13 июля 2006 21:03
· Личное сообщение · #14

stahh пишет:
Добавление ресурсов

ResHacker
Добавление секций
ToPo v1.2 by MrCrimson[WkT!2000]

-----
Nulla aetas ad discendum sera




Ранг: 74.4 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 13 июля 2006 21:20
· Личное сообщение · #15

stahh
Выложи отдельно ехе отдельно секцию которую надо прикрепить.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 13 июля 2006 23:08
· Личное сообщение · #16

Выложить с моим инетом не получиться. Я въехал, чо не добавлялась секция. Файл был упакован аспаком, я его унпакером распаковал. Секция аспака осталась. Новую секцию добавить можно, но не в рав а в виртуале. Обломс.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 14 июля 2006 10:45
· Личное сообщение · #17

stahh
Я на одной из программ нарвался на "баг" - для секций с большим выравниванием PETools и Lord SizeofImage неправильно считали - без учета выравнивания последней секции. После правки ручками - файл стал запускаться.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 14 июля 2006 20:52
· Личное сообщение · #18

tundra37
У меня выравнивание 1000. Думаю - это как раз то. А директория импорта тож не открывалась?

И чо, статей по реверсу нету? О вот таких сложных пациентах.




Ранг: 500.6 (!), 7thx
Активность: 0.260
Статус: Участник

Создано: 14 июля 2006 21:24
· Личное сообщение · #19

stahh пишет:
Файл был упакован аспаком, я его унпакером распаковал. Секция аспака осталась.


Так, удалил бы их.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 15 июля 2006 08:15
· Личное сообщение · #20

stahh пишет:
У меня выравнивание 1000. Думаю - это как раз то. А директория импорта тож не открывалась?

И чо, статей по реверсу нету? О вот таких сложных пациентах.

1) Выравнивание именно такое было. Я просто удлинял секцию. SizeofImage портился даже при простом пересчете.
2) Статьи тут не при чем. Надо всегда проверять. Rebuild PE на поверку тоже подвирает, но тут я не исследовал. Врут как раз в простых случаях в основном.
============
Если народ настаивает, то "кроликов" предоставлю. Возможно просто плагин-ы у меня не "обновлены". lordpe и petools вроде свежие.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 15 июля 2006 11:02
· Личное сообщение · #21

tundra37
Знаешь, я пересчитал, вроде все правильно. Сложил виртсайз всех секций плюс офсет первой. Или к каждой секции еще 1000 добавлять? Пробовал добавить 1000 к последней секции - тоже самое. "Файл не является приложением Win32". Может защита?
NIKOLA
Я ее не могу отрезать, так как она активно юзается. А вручную - "ошибка при инициализации приложения 0*с0000005". У меня во всех прогах на делфи, которые я пытался распаковать - такая хрень. Вроде - все правильно делаю, и импрек находит все ф-ции, а такая хрень. Руки наверное кривые



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 15 июля 2006 16:48
· Личное сообщение · #22

stahh пишет:
Знаешь, я пересчитал, вроде все правильно

Я тоже засомневался. С правками чисел понятно. А ты байты к экзешнику добавил ?!




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 15 июля 2006 20:02
· Личное сообщение · #23

tundra37
Объясни подробней - чо надо сделать. Как ты делал? А то устроили мы тут викторину.
SizeofImage - 0C129000. Пробовал и 0C12А000.А ты байты к экзешнику добавил ?! - это где?
В атаче - секции.

f4b7_15.07.2006_CRACKLAB.rU.tgz - screen.jpg



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 16 июля 2006 09:38 · Поправил: tundra37
· Личное сообщение · #24

stahh пишет:
Как ты делал?

Может, конечно, я что-то не понял, но petools и lord правят только каталог и длины секций. Сам экзешник они не удлинняют. Я удлиннял через winhex. С SizeofImage проблемы были только в loaddll из олли - там выравнивание 10000 и petools упорно режет по VirtualSize - после такой правки "программа не запускается". Я ее удлиннял, чтобы дамп DLL получить по разным адресам - была тут тема.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 16 июля 2006 11:30
· Личное сообщение · #25

Забыл - для loaddll в сборке shadow такой фокус не проходит - там в последней секции VirtualSize уже "округлен". Удлиннял секцию ресурсов - виртуальный размер. Рабочий оригинал loadall в аттече
+++++++++++++++++++++++++++++++++++++++++++++++
Дополнительно проверил добавление секции к DLL в PeTools. Сразу после добавления пустой секции - нерабочая DLL.

a6e5_16.07.2006_CRACKLAB.rU.tgz - loaddll1.exe




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 17 июля 2006 21:40
· Личное сообщение · #26

Чот я не въезжаю. Я Винхексом не пользовался. Делаю так: Вставить нулевые биты, указываю 1000 бит, потом сохранить модифицированный. ОК, файл увеличился на 1кб. Запускаю - все тоже самое.




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 18 июля 2006 00:15
· Личное сообщение · #27

2 ALL
Вот нарыл на винте
___________________________

Ручное добавление секций в EXE

Автор......: SunShine
Перевод....: NightCat \\ TEAM-53
Инструменты: Hex-Редактор, PEditor(или PE Tools, ProcDump, LordPE)

1. Вступление

Иногда добавление новой секции - выход из ситуации, когда больше некуда вставить свой код в PE. Я знаю много редкаторов, которые сделают всё автоьматически, но у вас есть стимул, чтобы хоть раз сделать это руками: вы кое-чем научиться относительно формата PE, особенно что касается секций. Давайте начнём!

2. Добавляем байты

Сперва давайте глянем на наш AddSection.exe. Откройте его в PEditor или другой программе и вы увидите, что там 3 секции:

Section Virtual Size Virtual Offset Raw Size Raw Offset Characteristics
.text 000002C2 00001000 00000400 00000400 60000020
.rdata 000001C2 00002000 00000200 00000800 40000040
.data 000002F8 00003000 00000200 00000A00 C0000040

Откройте этот файл в Hex Workshop. Допустим мы хотим. чтобы наша новая секци была длиной 110h байт. Как вы видите в конце файла есть много нулей. Так что выделите их все начиная с AE0 до BEF (как раз 110h байт), затем выберите Edit->Copy.

После этого поместите курсор в самый конец файла и выберите Edit->Paste.

Ну вот, у нас есть новая секция. Она начинается с оффсета C00 и заканчивается на D0F. Её длина 110h байт.

3. Модифицируем PE Header

Чотбы пофиксить PE Header, нам нужно сделать три шага:

- Увиличить число секций (число находится ан оффсете 06 в заголовке PE!)
- Увеличить Image Size
- Добавить нашу новуюсекцию в section table

Как вы видитет, PE signature находится по оффсету B0. На на оффсете B6 вы видите 03 00 (переведём в DWORD - 0003), т.к. у нас в оригинале 3 секции. Надеюсь понятно, что мы должны поменять 0300 на 0400.

Теперь нам нужно увеличить Image Size. Вещь о которой обычно забывают =) Давайте снова взглянем на файл через PEditor. Мы видим, что Section Alignment = 1000h, а Image Size = 4000h. Т.к. выравнивание у нас равно 1000h, наша секция должна быть длиной как минимум 1000h. Так что мы должны добавить 1000h к Image Size. Получается, что 4000h + 1000h = 5000h. Image size находится по оффсету 50h в заголовке PE. Идём к B0h + 50h = 100h. Тут меняем 0040 на 0050.

Сейчас нам нужно добавить секцию в section table. Эта таблица начинается с оффсета F8h в заголовке PE. На секцию отводится 28h байт в таком порядке:

+0 Array[8] of byte Name -> назовём нашу секцию .Sun
+08 DWORD PhysicalAddress / Virtual Size -> Virtual size = 110h -> 10010000
+0C DWORD VirtualAddress -> 4000, т.к. для предыдущей 3000 -> 00400000
+10 (16) DWORD SizeOfRawData -> 110h -> 10010000
+14 (20) DWORD PointerToRawData -> мы добавили начиная с C00 -> 000C0000
+18 (24) dword PointerToRelocations -> 00000000
+1C (28) DWORD PointerToLineNumbers -> 00000000
+20 (32) WORD NumberOfRelocations -> 00
+22 (34) WORD NumberOfLineNumbers -> 00
+24 (36) DWORD Characteristics -> C0000040 (как у секции .data) -> 400000C0

Итак, добавьте эти данные в таблицу сразу же за последней секцией по оффсету B0h + F8h + 3*28h = 220h. Если вы всё сделали правильно, то в итоге всё должно выглядеть как на скриншоте finish.gif.

Вот и всё. Сохраняйте файл, загружайте в PEditor, чтобы проверить всё ли в порядке. Ага, это совсем не сложно, не так ли?

Keep cool!

Sunshine

-----
Nulla aetas ad discendum sera




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 18 июля 2006 10:16
· Личное сообщение · #28

stahh пишет:
Я Винхексом не пользовался. Делаю так: Вставить нулевые биты, указываю 1000 бит, потом сохранить модифицированный. ОК, файл увеличился на 1кб.

1) Чем добавляешь ? Попробуй на loaddll.exe это все повторить.
2) Удлиннение файла ни о чем не говорит. loaddll у меня тоже иногда удлинняется, но никогда не работает. Проверить raw-size можно делая save секции в файл.
Flint пишет:
Ручное добавление секций в EXE

Это все было написано, когда тулзы не делали это автоматом. И petools и lord делают это, но иногда врут. Повторю - возможно у меня плагины старые, но нужно разобраться. На loaddll все могут проверить.




Ранг: 127.3 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 19 июля 2006 00:45
· Личное сообщение · #29

Ну да, везде та же хрень. Я же и говорю, добавлял секцию винхексом. Иду в конец файла, "добавить нули", 1000. В конце нарисовывается 1000 нулей. Сохранить модифицированный файл. Опа -
На пальцах объясни, как чайнику. Какую-то мелочь я пропускаю.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 19 июля 2006 09:35 · Поправил: tundra37
· Личное сообщение · #30

stahh пишет:
Какую-то мелочь я пропускаю

Если бы я знал. Прицепи каталог секций и PE-заголовок работающей(!) и неработающей(с добавленной секцией) программ. Эксперименты с Loaddll показали, что дело в SizeofImage, но я добился пока добавления существующей секции, причем пришлось править и параметры секций( я добавил еще одну секцию ресурсов, а потом удалил обе и добавил удлинненую). Попробуй не создавать секцию, а грузить ее
(load section), но следи за цифрами.
++++++++++++++++++
Пока подозрение, что у тебя другая проблема. У тебя должно сработать так :
1) Добавляешь через load секцию и просто в PETools тюкни кнопку с вопросом сбоку от SizeofImage - он сам пересчитает. И ни в коем случае не делай REBuild PE - у меня еще ни разу на дампе не получался рабочий экзешник.


. 1 . 2 . >>
 eXeL@B —› Основной форум —› Рипнуть ф-цию ?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати