Сейчас на форуме: ManHunter, Magister Yoda, rtsgreg1989 (+10 невидимых) |
eXeL@B —› Основной форум —› Распаковка Reflector v4.1.58 |
Посл.ответ | Сообщение |
|
Создано: 10 июня 2005 18:25 · Личное сообщение · #1 Для распаковки рефлектора нужно, что бы он был загружен вместе с вашей прогой. Для этого нужно добавить его в Referense проги. Как известно студия не позволяет exe добавлять в референс поэтому правте файл проекта вручную. Хотя если ваш проект не плагин к рефлектору тогда его можно просто переименовать в DLL Собственно распаковку запротекченного модуля выполняет функция: Sub ReflectorExtract() 'Цифра 1 здесь если запускаете функцию из плагина, но она должна быть другой из нормальной проги. В отладке посмотрите... Dim RefAsm As Reflection.Assembly = AppDomain.CurrentDomain.GetAssemblies()(1) Dim stream1 As IO.Stream = RefAsm.GetManifestResourceStream("Reflector.resources") Dim num1 As Integer = stream1.Length Dim buffer1 As Byte() = New Byte(num1 - 1) {} stream1.Read(buffer1, 0, num1) Dim num2 As Int32 = 137 Dim num3 As Int32 = 22 Dim num4 As Integer For num4 = 0 To num1 - 1 buffer1(num4) = buffer1(num4) Xor num2 num2 = BitConverter.GetBytes(num2 + num3)(0) Next num4 Dim t1 As System.Type = RefAsm.GetType("_3") Dim _1 As Object = System.Activator.CreateInstance(t1, New Object() {New IO.MemoryStream(buffer1)}) _1.MoveNext() Dim flags As Reflection.BindingFlags = Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance Dim Dump() As Byte = _1.Current.GetType.GetFields(flags)(1).GetValue(_1.Current) Dim FS As New IO.FileStream("Reflector.Application.dll", IO.FileMode.OpenOrCreate) FS.Write(Dump, 0, Dump.Length - 1) FS.Close() End Sub Защита рефлектора постронна так, что все функции из него вызываются через интерфейсы (через жопу короче) , а интерфейсы клеются к обьектам запротекченного модуля. Почему я его стал ломать? Потому я пишу плагин и этот козел на своем форуме не удасужился в течении недели ответить мне на мой вопрос где я его спрашивал, как обойти его же косяк в рефлекторе. После распаковки вопросы отпали сами по себе 2086_Reflector.Application.JPG ----- have a nice day |
|
Создано: 10 июня 2005 18:30 · Личное сообщение · #2 После энкрипта идет распаковка ее делает функция _1.MoveNext(), чтоб не заморачиваться я вызываю эту функцию из него 6132_MoveNext.txt ----- have a nice day |
|
Создано: 10 июня 2005 18:43 · Личное сообщение · #3 В ресурсах рефлектора обнаруженна справка по IL командам может быть полезна... f91d_Reflector.Disassembler.txt ----- have a nice day |
|
Создано: 10 июня 2005 18:47 · Личное сообщение · #4 Открою один секрет: IL код поддерживает одинаковые имена методов, полей, переменных , этим свойством пользуются некоторые обфускаторы для усложнения анализа кода. Однако ин должны различаться: 1. Возвращаемым типом (для переменных, полей или функций) 2. Количеством параметров (для функций и процедур) 3. Количество параметров может быть одинаковое но тогда должен отличаться тип хотябы одного из параметров (для функций и процедур) Пример из рефлектора: .method public hidebysig specialname instance string _1() cil managed { } .method public hidebysig specialname instance unsigned int8[] _1() cil managed { } .method public hidebysig specialname instance void _1(unsigned int8[]) cil managed { } .method public hidebysig specialname instance void _1(string) cil managed { } .field private string _1 { } .field private unsigned int8[] _1 { } ----- have a nice day |
eXeL@B —› Основной форум —› Распаковка Reflector v4.1.58 |
Эта тема закрыта. Ответы больше не принимаются. |