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

 eXeL@B —› Протекторы —› принцип работы защиты CodeVeil 3.x
Посл.ответ Сообщение

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

Создано: 14 января 2010 10:40 · Поправил: Модератор
· Личное сообщение · #1

Кто не будь юзал CodeVeil 3 , я бьюсь над распаковкой этого непобедимого монстра !
после упаковки все полезные методы сборки становятся пустыми....
Вазнакли вопросы по поводу функций которые он добавляет при пакетировании
class '<PrivateImplementationDetails>{F0D87D88-4EF7-4579-AC24-2CAF0E294600}'

'$$method0x6000009-0'
'$$method0x600000A-0'
....
'$$method0x600000z-0'

cldss ____KILL
class T
.'\n_2'
.....


Наивно предполагаю что какой то из них является распаковщиком


одно знаю точно так то что всегда в канце дизасемблированого файла находиться все сжате методы вот в таком виде
.data cil I_00004C80 = bytearray (
9D 18 EF C8 B0 49 D5 56 83 0F 03 AA 34 E1 80 BA // .....I.V....4...
D4 FC 6B 26 60 73 02 6C 2C 4E 55 1B CC 1B 7D EA // ..k&`s.l,NU...}.
CF 58 E3 64 B3 9F 80 9C D5 57 BF 31 64 2E 8A 00 // .X.d.....W.1d...
46 B0 BC 9E 5B 83 36 22 BA EF B1 F3 09 1B D8 E3 // F...[.6"........
64 F9 9A 1D 66 62 E6 64 9B E0 D1 B3 A2 53 44 95 // d...fb.d.....SD.




от модератора: достаточно выложить файл, не нужно столько текста! J



Как я понял распаковка идёт буквально перед JIT компиляцией , как перехватить этот момент ??
Проблема в том что дизасемблеры падают в этот момент т.к CodeVeil 3 ставит защиту от де компиляции !
всё это касается деманстрационно бесплатно версии CodeVeil
буду благодарен любой полезной информации !
Пример упаковки прикреплён в файле:

4527_13.01.2010_CRACKLAB.rU.tgz - CV_3.2.unpackme




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

Создано: 14 января 2010 12:51 · Поправил: NIKOLA
· Личное сообщение · #2

В рефлекторе выбирай декомпиляцию в IL, тогда рефлектор падать не будет.
Фактически, ни какой распаковки нет.

alexeyshevchenko пишет:
Вазнакли вопросы по поводу функций которые он добавляет при пакетировании class '<PrivateImplementationDetails>{F0D87D88-4EF7-4579-AC24-2CAF0E294600}'


один класс занимается восстановлением данных (непосредственно перед компиляцией), другой расшифровывает все строки.



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

Создано: 15 января 2010 10:12
· Личное сообщение · #3

NIKOLA в клссе '<PrivateImplementationDetails>{F0D87D88-4EF7-4579-AC24-2CAF0E294600}' метод $$method0x6000008-0 не имеет кода понять логику этого этого класса сложно врятли он будит заиматься восстановлением или расшифровкой поскольку непонятно кто его будит восстанавливать класс T вообще имеет только один метод (статический конструктор .cctor()) который инициализирует статические поля и ничего больше .....
cldss ____KILL -абсолютно пустой !



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

Создано: 15 января 2010 11:19
· Личное сообщение · #4

alexeyshevchenko
используйте ildasm от MS, узнаете много интересного, например:
(или как сказал NIKOLA - декомпиляцию в IL в Рефлекторе (View -> Options -> Disassembler -> Language -> IL

.method /*06000002*/ private hidebysig static pinvokeimpl("kernel32.dll" as "GetModuleHandle" winapi)
native int '$$method0x6000008-0'(string '‎') cil managed preservesig noinlining
// SIG: 00 01 18 0E
{
}



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

Создано: 15 января 2010 12:29 · Поправил: alexeyshevchenko
· Личное сообщение · #5

собственно говоря я и работаю с ildasm, с методом method0x6000008 ошибочка вышла он не пустой, method0x600000B пустой ...

Работа всего класса '<PrivateImplementationDetails>... сводится к вызову method0x600000D

.field static privatescope uint32 '$$method0x600000E-0$PST04000001' at I_000022D0
.field static privatescope uint32 '$$method0x600000F-0$PST04000002' at I_0000265C

.method private hidebysig static bool method0x600000D (int32 A,int32 B) cil managed noinlining
{
.maxstack 8

IL_0000: ldarg B
IL_0004: ldarg A


IL_0008: ldsflda uint32 '<PrivateImplementationDetails>...::'$$method0x600000E-0$PST04000001'
IL_000d: ldsflda uint32 '<PrivateImplementationDetails>...::'$$method0x600000F-0$PST04000002'

а тут вызывается функция по адрессу
IL_0012: calli unmanaged cdecl bool(int32,int32,native int)
IL_0017: ret
}
Как узнать что эта за функция и что она делает?



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

Создано: 15 января 2010 13:00
· Личное сообщение · #6

alexeyshevchenko пишет:
IL_0012: calli unmanaged cdecl bool(int32,int32,native int)
IL_0017: ret
}
Как узнать что эта за функция и что она делает?

Эта функция вызывает Х86 код, о котором я и zeppe1in тебя предупреждали на http://exelab.ru/f/action=vthread&forum=1&topic=15602



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

Создано: 15 января 2010 13:30 · Поправил: alexeyshevchenko
· Личное сообщение · #7

DarkWolf Я понимаю что Х86 код вызывается как определить куда именно бросает этот вызов ?



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

Создано: 15 января 2010 15:48
· Личное сообщение · #8

Вот как аргументы передаются в .NET:
Code:
  1. IL_0000: ldarg B  ;первый аргумент функции (int32)
  2. IL_0004: ldarg A  ;второй аргумент функции (int32)
  3. IL_0008: ldsflda uint32 '<PrivateImplementationDetails>...::'$$method0x600000E-0$PST04000001' ;третий аргумент функции (native int)
  4. IL_000d: ldsflda uint32 '<PrivateImplementationDetails>...::'$$method0x600000F-0$PST04000002' ;собственно, адрес x86 кода
  5. IL_0012: calli unmanaged cdecl bool(int32,int32,native int)  ;вызов native кода

а потом смотри эту строчку
Code:
  1. .field static privatescope uint32 '$$method0x600000F-0$PST04000002' at I_0000265C

Значит RVA x86 кода=0x0000265C



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

Создано: 10 февраля 2010 05:28 · Поправил: alexeyshevchenko
· Личное сообщение · #9

как устроена защита CodeVeil 3.2 может у кого всё таки есть ссылачка почитать?
со многим разобрался в часности выяснил что метод T.U(int32) расшифровывает константные строки
немогу понять что хранит T.FieldName byte[] - массив байт есть подозрения что это бинарник расшифрованы методов но не уверен .
также неразобрался что делает класс <PrivateImplementationDetails>{F0D87D88-4EF7-4579-AC24-2CAF0E294600}



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

Создано: 10 февраля 2010 21:15 · Поправил: Kiev78
· Личное сообщение · #10

---



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

Создано: 11 февраля 2010 07:34 · Поправил: alexeyshevchenko
· Личное сообщение · #11

к сожалению там ничего нет про 3.2




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

Создано: 11 февраля 2010 14:37
· Личное сообщение · #12

вот такое почитай
ntcore.com/files/netint_injection.htm
он вроде тоже хукает compileMethod, брякнешся на нём, и попадёшь прямиком в процедуру расшифровки кода.

-----
zzz




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

Создано: 11 февраля 2010 20:58
· Личное сообщение · #13

это уже интересно спасибо!


 eXeL@B —› Протекторы —› принцип работы защиты CodeVeil 3.x
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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