Сейчас на форуме: tyns777, cppasm, dutyfree (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Восстановление исходного кода dll
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 1.0 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 01 августа 2017 12:10 · Поправил: ElWray
· Личное сообщение · #1

Добрый день, уважаемые участники!
Передо мной стоит задача полного восстановления исходного кода небольшой dll библиотеки. Сама библиотека написана на языке C++ (Visual C++ 6.0).
Что я хочу сделать:
1. Дизассемблировать библиотеку и получить на выходе asm файл, который можно будет превратить в obj.
2. Исследовать часть методов с помощью IDA Hex-Rays и переписать их на C / C++.
3. Слинковать ассемблерный obj с переписанным на C / C++ obj файлами.
4. Повторять до тех пор, пока не будут переписаны все методы на C / C++.

Собственно вопрос:
Перепробовал целую кучу дизассемблеров, но не нашел такого, который может дизассембировать exe в asm файл, и получить пригодный для компиляции код (asm в obj или exe). IDA-шный код не компилится. Подскажите наиболее пригодный для этого дизассемблер. Заранее спасибо!



Ранг: 58.3 (постоянный), 50thx
Активность: 0.040.08
Статус: Участник

Создано: 01 августа 2017 12:20 · Поправил: DrVB_5_6
· Личное сообщение · #2

ElWray пишет:
Подскажите наиболее пригодный для этого дизассемблер.


Нет такого в природе и никогда не будет.
Ручками в Ида (включая мозг) - лучшего варианта не найдёшь.
а лучше сразу на "С" без асм, но квалификация определённая нужна...

| Сообщение посчитали полезным: ElWray

Ранг: 1.0 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 01 августа 2017 13:39
· Личное сообщение · #3

DrVB_5_6 пишет:
Нет такого в природе и никогда не будет.

Спасибо большое. А еще можете пожалуйста подсказать с чем это связано или где можно почитать? Был уверен что можно любой exe файл дизассемблировать а затем обратно скомпилировать.



Ранг: 58.3 (постоянный), 50thx
Активность: 0.040.08
Статус: Участник

Создано: 01 августа 2017 13:46
· Личное сообщение · #4

DrVB_5_6 пишет:
Был уверен что можно любой exe файл дизассемблировать а затем обратно скомпилировать


Можно, но сложно и почти никогда на автомате.

Самая большая проблема: разделение команд и данных. Фон Неймановские машины. Изучай.



Ранг: 1.0 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 01 августа 2017 13:53
· Личное сообщение · #5

DrVB_5_6 пишет:
Можно, но сложно и почти никогда на автомате.

Самая большая проблема: разделение команд и данных. Фон Неймановские машины. Изучай.

Спасибо, почитаю.



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 01 августа 2017 14:06
· Личное сообщение · #6

ElWray пишет:
Был уверен что можно любой exe файл дизассемблировать а затем обратно скомпилировать.

Скорее это относилось к COM'ам времен MS-DOS)



Ранг: 58.3 (постоянный), 50thx
Активность: 0.040.08
Статус: Участник

Создано: 01 августа 2017 14:18
· Личное сообщение · #7

TryAga1n пишет:
Скорее это относилось к COM'ам времен MS-DOS)


Да и тогда это было не верно, тем более там, как правило, был ассемблер, а на нем уж можно извращаться покруче, чем это делают компиляторы. Автомата никогда и не было.



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 01 августа 2017 16:34
· Личное сообщение · #8

ElWray пишет:
восстановления исходного кода небольшой dll библиотеки

Если это не из "академического интереса", то сильно проще будет посмотреть общий алгоритм и воспроизвести на на C / C++
Если либа не представляет из себя какой-то "изолированный" уникальный крипто-механизм, или что-то подобное, нет вообще никакого смысла в реконструкции из дизасма.



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

Создано: 02 августа 2017 04:08
· Личное сообщение · #9

DrVB_5_6 пишет:
Да и тогда это было не верно

Тогда - в особенности.




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

Создано: 06 августа 2017 02:22
· Личное сообщение · #10

ElWray

> Передо мной стоит задача

Зачем же вы берёте ТЗ, которое не можите выполнить(принципиально инструментов для автоматики нет).

Любой каприз за ваши деньги (с).

-----
vx




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 06 августа 2017 02:26
· Личное сообщение · #11

ElWray пишет: Перепробовал целую кучу дизассемблеров, но не нашел такого, который может дизассембировать exe в asm файл, и получить пригодный для компиляции код (asm в obj или exe)

бугага, как детская непосредственность. магии нет, все делается руками, а рутина сбрасывается на скрипты.

ElWray пишет:Подскажите наиболее пригодный для этого дизассемблер

IDA + скриптинг, лучшего ничего нет, тем более для нуба.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 07 августа 2017 16:35 · Поправил: reversecode
· Личное сообщение · #12

идашный код компилится, только надо ручками сначала все поправить
была статья где то на народ ру, и линки на нее на васме и здесь на форуме
https://exelab.ru/art/?action=view&id=600


а так вообще нормальные пацаны сразу из рейса в с++ переписывают и не парятся

| Сообщение посчитали полезным: ElWray, shellstorm

Ранг: 1.0 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 08 августа 2017 22:00
· Личное сообщение · #13

difexacaw пишет:
Зачем же вы берёте ТЗ, которое не можите выполнить(принципиально инструментов для автоматики нет).

Ну уже где-то половину кода переписал, хотел немного упростить себе задачу. Да и был уверен, что прогу можно дизассемблировать и тут же ее собрать, а оказалось что нет )))

shellstorm пишет:
IDA + скриптинг, лучшего ничего нет, тем более для нуба.

Понял, спасибо.

reversecode пишет:
идашный код компилится, только надо ручками сначала все поправить
была статья где то на народ ру, и линки на нее на васме и здесь на форуме
https://exelab.ru/art/?action=view&id=600

а так вообще нормальные пацаны сразу из рейса в с++ переписывают и не парятся

Спасибо большое за ссылку. Переписываю, правда на Си, а тут немного хотел себе упростить задачу. Запихнув ассемблерный код в Си-шный через директиву asm. Но получился облом.

В любом случае всем спасибо!




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

Создано: 10 августа 2017 19:10
· Личное сообщение · #14

ElWray

> Ну уже где-то половину кода переписал, хотел немного упростить себе задачу.

Да проще всё, ты барыга. Помогите мне заработать шекель", так нужно было назвать топик.

-----
vx




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 10 августа 2017 19:28
· Личное сообщение · #15

ElWray пишет:
Переписываю, правда на Си, а тут немного хотел себе упростить задачу.

Куда уж проще: нажал F5 в иде и сиди переименовывай переменные, да типы правильные прописывай...



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 10 августа 2017 21:20
· Личное сообщение · #16

ElWray пишет:
Запихнув ассемблерный код в Си-шный через директиву asm. Но получился облом.


какой?

PS
не помню с какой версии VС++ отказалсь от asm {}
перешли на интринсики.



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

Создано: 10 августа 2017 21:36
· Личное сообщение · #17

ElWray пишет: хотел немного упростить себе задачу. Да и был уверен, что прогу можно дизассемблировать и тут же ее собрать

Это называется не упростить задачу, а создать непортабельного гомункула которого невозможно сопровождать и как то вменяемо развивать, такой подход годится максимум для кейгена или "привет мир" в фриланс-проекте.

| Сообщение посчитали полезным: ElWray

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

Создано: 10 августа 2017 21:49
· Личное сообщение · #18

sendersu пишет:
не помню с какой версии VС++ отказалсь от asm {}


Чудят.

Они ещё визуальный басик одно время продвигали с упорством танка.
Одержимые какие-то.



Ранг: 1.0 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 10 августа 2017 21:59 · Поправил: ElWray
· Личное сообщение · #19

difexacaw пишет:
Да проще всё, ты барыга. Помогите мне заработать шекель", так нужно было назвать топик.

https://github.com/El-Wray/N2CadX
)))

rmn пишет:
Куда уж проще: нажал F5 в иде и сиди переименовывай переменные, да типы правильные прописывай...

Ну где можно +- так и сделал.

sendersu пишет:
какой?

PS
не помню с какой версии VС++ отказалсь от asm {}
перешли на интринсики.

В 2017 проверял для Си проекта. Работает.

shellstorm пишет:
Это называется не упростить задачу, а создать непортабельного гомункула которого невозможно сопровождать и как то вменяемо развивать, такой подход годится максимум для кейгена или "привет мир" в фриланс-проекте.

Хотел собрать монстра из Си кода и ассемблерного, и постепенно избавляться от ассемблерного.



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 10 августа 2017 22:14
· Личное сообщение · #20

sendersu пишет:
не помню с какой версии VС++ отказалсь от asm {}

Так то ж только в x64. Или уже и в x86 поддержку убрали?




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

Создано: 10 августа 2017 23:53
· Личное сообщение · #21

rmn пишет:
VС++ отказалсь от asm {}

Неправда, асм во всех VC работает, только выгдядит вот так _asm {} или __asm {}, да и такой asm {} работает, только у каждого свои ограничения
Code:
  1. _asm
  2. {
  3.          mov         eax, value
  4.          mov         cl, shift
  5.          rol         eax, cl
  6.          mov         res, eax
  7. }
  8.  
  9. __asm { wait }
и т.д.

-----
Everything is relative...





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 11 августа 2017 00:14
· Личное сообщение · #22

x64 __asm ни в одной студии нет



Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 11 августа 2017 03:45 · Поправил: v00doo
· Личное сообщение · #23

Добавлю еще тот факт, что можно студию заставить компилить интеловским компилером, который вроде как поддерживает директиву asm в x64 (и за который еще хотят вечнозеленых), но я никогда не пытался городить этих костылей, только время тратить.

| Сообщение посчитали полезным: ElWray


Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 11 августа 2017 07:30
· Личное сообщение · #24

difexacaw пишет:
Да проще всё, ты барыга.


вот не пойму, ты свои М-моторы бесплатно пилишь, что ли? А живешь на что, уж прости моё любопытство.

| Сообщение посчитали полезным: kampaster


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

Создано: 11 августа 2017 20:11 · Поправил: difexacaw
· Личное сообщение · #25

Gideon Vi

Я честно зарабатываю не большие деньги ремонтом сложных станков(фрезерные, расточные, строгальные и есчо стопицот). Вы должны были знать историю, прежде чем меня обвинить в комерсе. Подпись говорит о чём то ?

Добавлено спустя 10 минут
Наверно нужно напомнить что есть виксы, так как видимо все забыли. Это альтернативные разработки и ваш шекель при этом не нужен как и вы сами, при этом вы - баласт.

-----
vx





Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 12 августа 2017 03:05
· Личное сообщение · #26

difexacaw пишет:
Вы должны были знать историю, прежде чем меня обвинить в комерсе.


я обвинял? Пальцем покажи, где - я исправлю. Штатным обвинятилем форума у нас ты заделался, весь из себя белый и пушистый, любитель М-моторов и виксов, что бы там это не означало.




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

Создано: 12 августа 2017 04:01
· Личное сообщение · #27

Gideon Vi

Так получилось что у вас всё вокруг комерса крутится. Вы вот например даже так и думаете что ничего не разрабатывается просто так, интереса ради

-----
vx





Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 12 августа 2017 06:08 · Поправил: Gideon Vi
· Личное сообщение · #28

Ну ясна-понятна, Инде в своём репертуаре: зайти в тему, нагадить, получить встречный вопрос, слиться. Повторять при появлении новой темы.

| Сообщение посчитали полезным: plutos, zNob

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

Создано: 12 августа 2017 07:38
· Личное сообщение · #29

Итерации это называется.

| Сообщение посчитали полезным: difexacaw


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

Создано: 12 августа 2017 21:05 · Поправил: difexacaw
· Личное сообщение · #30

Как бы вы не говорили, но сей форум признан профнепригодным - вы не способны решать элементарные алгоритмические задачи.
А учитывая админский беспредел, то даже не знаю что вы будите делать дальше, инфа ведь быстро распространяется.

-----
vx



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


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