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

 eXeL@B —› Протекторы —› Oreans UnVirtualizer ODBG Plug-in
<< . 1 . 2 . 3 . 4 .
Посл.ответ Сообщение


Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 25 марта 2011 21:02 · Поправил: BoRoV
· Личное сообщение · #1

UnVirtualizes CISC Themida/WL/CodeVirtualize Machines

Автор: Deathway

Code:
  1. This tool will help conversion VirtualOpcodes -> Assembly Instruction
  2. restoring the original code of your virtualized Application, the basic engine
  3. was from CodeUnvirtualizer, my other tool
  4.  
  5. [Features]
  6. - Supports WinLicense/Themida/CodeVirtualizer Cisc Machines
  7. - Supports almost all common opcodes
  8. - Supports CHECK_MACRO_PROTECTION
  9. - Supppots MultiBranch Tech
  10.  
  11. [Use]
  12. - Right-click on the jump leading to the Virtual Machine Area and press Unvirtualize (If machine isn't found
  13. you have to click again, after checking that the full machine was correctly deofuscated)
  14.  
  15.  
  16. [Oreans UnVirtualizer]
  17. [v1.0]
  18. - First public Version


3bb2_25.03.2011_EXELAB.rU.tgz - OreansUnVirtualizerv1.0.rar

-----
Лучше быть одиноким, но свободным © $me


| Сообщение посчитали полезным: Maximus, Rio, HandMill

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

Создано: 04 апреля 2012 11:15
· Личное сообщение · #2

ClockMan пишет:
где EBP "BaseOreans" и идёт обращение в секцию дата-код протектора.


Интересная мысль, я сразу в нее не въехал. Обязательно проверю!



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 15 мая 2012 23:04
· Личное сообщение · #3

плагин UnVirtualizer убирает VM - это плюс
а что делать если это нихера не VM, а обфускация?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 16 мая 2012 10:19
· Личное сообщение · #4

Этим плагином-ничего. А чем она особо мешается? Насколько помню, она не в динамически аллоченой памяти, а в своей секции лежит, и нормально дампится, антидампов в ней тоже нет. А если именно разобрать надо, я не встречал софта, где её надо было бы разбирать, ну разбирать руками или написать софт, в принципе она не особо страшная. Можно попробовать чо-нить типа CodeDoctor натравить, хотя ничего хорошего от него ждать не стоит.




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

Создано: 16 мая 2012 18:19
· Личное сообщение · #5

SReg
а что делать если это нихера не VM, а обфускация?
Смотря в чем, если CodeVirtualizer, то исполняешь этот кусок кода в реальном режиме и в нужном месте увидишь родной asm код...

-----
Everything is relative...




Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 25 декабря 2012 01:05
· Личное сообщение · #6

[v1.6]
- RISC machine re-designed
- Added RISC V2 machines (new branch tech)
- Added Pushad-popad instructions on risc machines
- Fixed some issues with end jump
- Added new detection for virtual machines
- Added abort button


4a33_24.12.2012_EXELAB.rU.tgz - Oreans UnVirtualizer 1.6.rar

| Сообщение посчитали полезным: daFix, MasterSoft, BAHEK, plutos, SReg, Maximus, vnekrilov, DimitarSerg, Ra1n0, mkdev


Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 25 декабря 2012 03:34
· Личное сообщение · #7

NikolayD
Как-то недавно пришлось долго медитировать на кусок кода, где было пропущено всего несколько ассемблерных команд.
Просидел долго, но в этой версии все баги вроде поправлены! Респект автору софтины!

-----
Research For Food




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

Создано: 03 февраля 2013 19:29 · Поправил: vnekrilov
· Личное сообщение · #8

Вопрос к знающим. Столкнулся с RISC-машиной, при использовании Oreans UnVirtualizer 1.6. Имеется такой код:

Code:
  1.          00911CED         MOV DWORD PTR [EBP+0xfffffffc],0x193
  2.          00911D38         CMP DWORD PTR [0x6fc768],0x0
  3.          00911D83         JNZ 0x80005ad2
  4.          00911D92         PUSH 0x6fc768
  5.          00911DFB         PUSH 0x4121c4
  6.          00911E55         CALL DWORD PTR [0x4012b0]
  7.          00911EDC         MOV DWORD PTR [EBP+0xfffff854],0x6fc768
  8.          00911F18         JMP 0x80005b0e
  9.          00911F27         MOV DWORD PTR [EBP+0xfffff854],0x6fc768
  10.          00911F63         MOV EAX,DWORD PTR [EBP+0xfffff854]
  11.          00911FBD         MOV ECX,DWORD PTR [EAX]


В нем имеется условный прыжок:
Code:
  1. 00911D83 JNZ 0x80005ad2


В восстановленном коде он прыгает сюда:
Code:
  1. 00911F27 MOV DWORD PTR [EBP+0xfffff854],0x6fc768


В CISC-машинах - другая структура прыжка, например:
Code:
  1. 00911D83 JNZ 0x19F


В этом случае дистанция прыжка вычисляется просто:
00911D83+19F+5=00911F27

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




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 03 февраля 2013 22:10
· Личное сообщение · #9

Может 0x80005ad2 = -0x00005ad2. Т е прыжок вверх?



Ранг: 42.9 (посетитель), 33thx
Активность: 0.040
Статус: Участник

Создано: 03 февраля 2013 22:43
· Личное сообщение · #10

vnekrilov пишет:
00911F18         JMP 0x80005b0e

а вот этот  JMP случайно прыгает не на 00911F63?

Тогда может 5ad2 и 5b0e это дистанция от некой одной базы.




Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 03 февраля 2013 23:34
· Личное сообщение · #11

Чем строить догадки, может стоит уже посмотреть официальную документацию на RISC опкоды?

-----
http://ntinfo.biz





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 04 февраля 2013 01:03
· Личное сообщение · #12

hors
К чему - к Themida?

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 04 февраля 2013 01:18
· Личное сообщение · #13

ARCHANGEL к RISC архитектуре.

-----
http://ntinfo.biz





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 04 февраля 2013 14:49
· Личное сообщение · #14

hors
Не понимаю вас, и как это поможет при декомпиляции вм Фемиды? Там что, разрабы риск спецификацию соблюдали, чтоб легче реверсилось?

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 04 февраля 2013 14:59
· Личное сообщение · #15

ARCHANGEL пишет:
Не понимаю вас, и как это поможет при декомпиляции вм Фемиды? Там что, разрабы риск спецификацию соблюдали, чтоб легче реверсилось?


Вопрос был, как высчитывается адрес jmp на RISC машине. С этим можно разобраться, если посмотреть как переходы реализуются на RISC архитектуре вообще.

-----
http://ntinfo.biz




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

Создано: 04 февраля 2013 16:17 · Поправил: vnekrilov
· Личное сообщение · #16

Я поступил следующим образом. В одной оле открыл вторую, во второй открыл подопытного кролика, нашел в плагине Oreans UnVirtualizer адреса, где обрабатывается восстановленный p-код, и смотрю, как плагин считает эти адреса. После изучения этого вопроса - отпишусь. Не хотелось это делать самому, поскольку я думал, что кто-то уже прошел этот путь.



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

Создано: 05 февраля 2013 14:51 · Поправил: vnekrilov
· Личное сообщение · #17

Разобрался в заданном мной вопросе. В RISC-машинах адрес прыжков вычисляется по формуле:

ADDR_1 + ADDR_2 + 80000000

Где: ADDR_1 - это первый адрес вначале листинга Risc_Uv_Dump.txt
ADDR_2 - это дистанция прыжка в листинге Risc_Uv_Dump.txt

Пример:
Это - начало листинга:

Code:
  1.          00949A99         PUSH EAX
  2.          00949B02         AND EAX,EDI
  3.          00949B11         MOV AX,AX
  4.          00949B2F         AND EAX,0xe5a9
  5.          00949B4D         PUSHFD 
  6.          00949BA7         SHR AH,0x4


Это - часть листинга с прыжком и дистанцией прыжка:
Code:
  1.          0094F0E8         JE 0x80005c1c
  2.          0094F0F7         PUSH 0x0
  3.          0094F160         PUSH 0x46
  4.          0094F1BA         MOV EAX,DWORD PTR [ESI]
  5.          0094F205         PUSH ESI
  6.          0094F26E         CALL DWORD PTR [EAX+0x3b8]
  7.          0094F304         PUSH EAX
  8.          0094F36D         LEA ECX,DWORD PTR [EBP+0xffffffd0]
  9.          0094F3B8         PUSH ECX
  10.          0094F430         CALL EBX
  11.          0094F4B7         PUSH EAX
  12.          0094F520         CALL DWORD PTR [0x401038]
  13.          0094F5B6         ADD ESP,0xc
  14.          0094F5D4         LEA ECX,DWORD PTR [EBP+0xffffffd0]
  15.          0094F62E         CALL DWORD PTR [0x4013c8]
  16.          0094F6B5         LEA EAX,DWORD PTR [EBP+0xc]
  17.          0094F700         MOV DWORD PTR [EBP+0xffffff80],EAX
  18.          0094F74B         MOV ECX,0x4003
  19.          0094F75A         MOV DWORD PTR [EBP+0xffffff78],ECX
  20.          0094F7A5         SUB ESP,0x10


Вычисляем дистанцию прыжка:

00949A99 + 0x80005c1c + 80000000 = 0094F6B5

Значит, в листинге мы должны сделать так:

Code:
  1.          0094F0E8         JE @loc_0094F6B5
  2.          0094F0F7         PUSH 0x0
  3.          0094F160         PUSH 0x46
  4.          0094F1BA         MOV EAX,DWORD PTR [ESI]
  5.          0094F205         PUSH ESI
  6.          0094F26E         CALL DWORD PTR [EAX+0x3b8]
  7.          0094F304         PUSH EAX
  8.          0094F36D         LEA ECX,DWORD PTR [EBP+0xffffffd0]
  9.          0094F3B8         PUSH ECX
  10.          0094F430         CALL EBX
  11.          0094F4B7         PUSH EAX
  12.          0094F520         CALL DWORD PTR [0x401038]
  13.          0094F5B6         ADD ESP,0xc
  14.          0094F5D4         LEA ECX,DWORD PTR [EBP+0xffffffd0]
  15.          0094F62E         CALL DWORD PTR [0x4013c8]
  16.          
  17. @loc_0094F6B5:
  18.          
  19.          LEA EAX,DWORD PTR [EBP+0xc]
  20.          0094F700         MOV DWORD PTR [EBP+0xffffff80],EAX
  21.          0094F74B         MOV ECX,0x4003
  22.          0094F75A         MOV DWORD PTR [EBP+0xffffff78],ECX
  23.          0094F7A5         SUB ESP,0x10


Я полагаю, что эта информация будет полезной для всех тех, кто восстанавливает распознанный код плагином Oreans UnVirtualizer, и получил при этом ошибку в работе плагина. В этом случае, после внесения правок в листинг с распознанным кодом, можно использовать прекрасный плагин Multiline Ultimate Assembler.

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

Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 31 января 2014 11:15
· Личное сообщение · #18

[v1.7]
- FISH machine avaible (WHITE and RED variants)
- Added Vm signatures

Hi all, the new version of this plug-in supports the FISH virtual machine, WHITE and RED variants.

Some words about this machine...

It mixes both CISC and RISC architecture, but the code isn't like template anymore, every virtual machine has a new different number of handlers, and every handler contains a different execution path, a little tricky, but nothing that can't be 'devirtualized' , maybe i'll write a paper about FISH and TIGER machines later.

Some specs that aren't coded yet:
- Support for Check macro;
- Sort algo is very unstable
- This plugin may crash when deofuscating very rare sequences, (most of them are 'expected' specially when crash was due to an ud2 instruction).
- Suppor for BLACK variants

... About TIGER, I have no plans for the moment, but it isn't very different from FISH analog.
Plug-in was tested with 2.2.6.0 version, other versions may have variants that this plug-in couldn't handle.


--> Link <--

cc55_31.01.2014_EXELAB.rU.tgz - Oreans UnVirtualizer 1.7.rar

| Сообщение посчитали полезным: CyberGod, SReg, tihiy_grom, v00doo, Maximus, vnekrilov, daFix, Gideon Vi, Ra1n0, neprovad

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

Создано: 05 февраля 2014 11:18
· Личное сообщение · #19

[v1.8]
- FISH BLACK variant avaible
- Fixed deofuscation order (GenV6)
- New deofucation scheme for FISH machine
- New smart code tracer for FISH machines
- Stack sort for FISH commands
- Improved management of memory (faster deofuscation)
- Added movzx reg32, [esp+eax+memoffset] on CISC machines
- Added a message prompt when the opcode buffer is not enough
- Added LEAVE instruction for FISH machines
- Added support for CALLs to VM section in FISH machines
- CHECK_PROTECTION macro disabled, now it must be restored by hand
- Fixed QWORD incorrect names for some opcodes
- Fixed a problem when deofuscating RISC machines




6081_05.02.2014_EXELAB.rU.tgz - Oreans UnVirtualizer 1.8.rar

| Сообщение посчитали полезным: DimitarSerg, CyberGod, SReg, Jaa, daFix, Gideon Vi, nick8606, NikolayD, plutos, mkdev

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

Создано: 12 сентября 2017 15:09
· Личное сообщение · #20

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



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

Создано: 12 сентября 2017 21:53
· Личное сообщение · #21

раритет (спс vnekrilov!)
585ba176d179cc556ee6227d8bc04bf4 *Oreans UnVirtualizer 1.4.rar


b3ca_12.09.2017_EXELAB.rU.tgz - Oreans UnVirtualizer 1.4.rar

| Сообщение посчитали полезным: Kuzya69, zNob, plutos
<< . 1 . 2 . 3 . 4 .
 eXeL@B —› Протекторы —› Oreans UnVirtualizer ODBG Plug-in
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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