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

 eXeL@B —› Основной форум —› Взлом dotNET программ
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 49 . 50 . >>
Посл.ответ Сообщение

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

Создано: 30 августа 2010 22:59 · Поправил: s0l
· Личное сообщение · #1

Со времени создания топика много обсудили, во много м разобрались и много осталось за кадром. Решил подшить выкладываемый софт и линки

Инструменты:

dnSpy - бодрый декомпилятор и отладчик тут беты

Gray Wolf - DE-ObfuScatE / Edit IL(Live) / Add payloads / Edit attributes(public/privet) / Copy strong names signing on EXE/DLL
ReSharper 6.0 Build 2093 Pre-Release - Очень навороченый декомпилер, побробности --> ТУТ <--.
Рег-данные:
Code:
  1. User Name: ReSharper EAP User
  2. License Key: 0-A60kqsqDMPkvPrLC3bz1/jmns4/DAUV6
  3. which is valid until 31 March 2010

Reflector 8.3.3.115 - платный декомпилятор .NET 8.3.0.95 + (дополнение к нему)
Седьмая версия рефлектора - думаю все знают
Сборка Add-in'ов для Reflector - есть много полезных вещей
.Net ID 1.0.0.3 - определение защиты
DNiD by Rue - сигнатурный анализатор
Dotnet IL Editor (DILE)- Opensource дизассемблер и дебаггер
Xenocode Fox Code Analyzer- профайлер и дизассемблер
Reactor Decryptor 1.7 - что то декриптит, но что не понятно(с) zeppe1in
Simple Assembly Explor (SAE) - Assembler, Disassembler, Deobfuscator, IL editor and more...
DotNet Dumper 1.0 - Дампер .net'овских приложений. Подробное описание
Kurapica dotNET Tracer 1.1 - трейсер от известного автора инструментов для .net
ILSpy 1.0.0.481 - Opensource комбайн, на подобие SAE. Подробности тут
dotTrace Performance 4.0.665.4 - Неплохой трейсер для .Net приложений. Умеет делать трейсы не смешивая потоки как KDT. Умеет сравнивать трейсы двух запусков программы
Рег-данные:
Code:
  1. Name: exelab
  2. Serial: OLgDSHG0hJghkLdXYJh1IjM3ytMrqKcn

Universal Fixer 1.0 - fix dumps after dumping them whit Dotnet Dumper or other similiar tools and will also fix nasty things: multiple assembly/module definitions, wrong extends, etc.
iMPROVE .NET Deobfuscator - деобфускатор


ConfuserDumper
ConfuserDelegateKiller
CodeCrackerTools: ConfuserMethodsDecryptor, ConfuserDelegateKiller, ConfuserStringDecryptor, MegaDumper, etc.

Статьи с хабры:
Защита .NET приложений - Субъективная теоретическая муть с хабры, выдаваемая за обзор обфускаторов(только для фанатов)
Как обмануть NET.Reflector - вот это уже годная статья, в которой рассматривается ручная обфускация в стихах и картинках
Взлом программ для чайников - ну не знаю...прописные истины, но приятно, что все это есть на русском языке и нормально оформлено
Реверс-инжиниринг обфусцированной сборки .NET - один только заголовок чего стоит. По сути статья информативная
Инъекции MSIL кода в стороннюю сборку при помощи Mono.Cecil. Реализация принципов АОП в NET
Избавление .NET программы от регистрации на примере BEM
Снимаем дамп объектов с памяти .Net приложения

Другое:
.NET Reflector v7.0.0.198 (C# Source by wangshy)
[url=http://lifeinhex.com/string-decryption-with-de4dot/]String decryption with de4dot[/url

-

Last edit: 2012-02-17, Links fixed. Jupiter]




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 20 сентября 2013 23:10
· Личное сообщение · #2

Jonny
Спасибо, поковыряюсь.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




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

Создано: 21 сентября 2013 01:21 · Поправил: Jonny
· Личное сообщение · #3

Запись происходит в dnlib.DotNet.Writer.MetaData.WriteMethodBodies()
нужно его переделать, например на след.:
перед циклом создаем объект PEImage из ориг. образа
и вместо
Code:
  1. var writer = new MethodBodyWriter(this, cilBody, keepMaxStack);
  2.                         writer.Write();
  3.                         var writerCode = writer.Code;

читаем сырые байты используя например MethodBodyReader
Code:
  1. var rva = method.RVA;
  2. var fileOffset = pefile.ToFileOffset(rva);
  3. var writerCode = MethdoBodyReader.Read(...)





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 21 сентября 2013 05:30 · Поправил: 4kusNick
· Личное сообщение · #4

Идея понятна, но MethodBodyReader не отдаст сырые байты, он парсит при чтении. Во всей либе он используется только в методе ReadCilBody, там видно что он ждёт параметры метода, тело которого читается, и в кишках самого ридера видно, что происходит в методе Read - там считываются и парсятся заголовки, локальные переменные, инструкции и т.д.. В общем, сырыми байтами не пахнет (

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

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




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

Создано: 21 сентября 2013 21:07 · Поправил: Jonny
· Личное сообщение · #5

4kusNick пишет:
Похоже надо где-то подсмотреть размеры тела метода и попробовать считать его исходя из оффсета и размера обычным дедовским способом "как есть", а потом передать в конструктор MethodBody вместо writer.Code.

method.RVA указывает на тело метода. Его формат расписан "Common Language Infrastructure (CLI)
Partition II: Metadata Definition and Semantics" 25.4 Common Intermediate Language physical layout.
Процесс сводится к чтению заголовка (бывает двух видов, потом вычленение из заголовка размера массива байтов самих инструкций, и еще чтение доп секций после кода, если есть (указывается также в заголовке)). Все это реализовано в MethodBodyReader. И чтобы не переписывать все заново , как вариант - добавить в CilBody свойство RawData и в методе MethdoBodyReader.Read читать в него, а в MethdoBodyWriter - использовать.

Upd: Чтобы сделать более универсальным, добавить в Metadata.options новый флаг - CliBodyRawMode и отталкиваясь от его значения, включать или выключать режим чтения сырых байтов.



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 21 сентября 2013 23:19 · Поправил: Medsft
· Личное сообщение · #6

Не понял чего надото превратить метод в байт массив?

Возьмите в проект)))


На раз рекомендую Metadatareader от Bogdan

На два код Universal Fixera от Codecrackera давно уже есть в сети-там все офигенно)))




Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 22 сентября 2013 08:48
· Личное сообщение · #7

Есть какие то идеи по снятию ilprotector ? Какаето новая версия, дедот не берет, даже не знаю с какой стороны подступить...

4c8e_22.09.2013_EXELAB.rU.tgz - Altair-keyboard.exe

-----
-=истина где-то рядом=-




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

Создано: 23 сентября 2013 21:21 · Поправил: Jonny
· Личное сообщение · #8

KingSise пишет:
Есть какие то идеи по снятию ilprotector ? Какаето новая версия, дедот не берет, даже не знаю с какой стороны подступить...

Для начала попробуй открыть в ilspy например.
Изучаем статический конструктор <Module> - видим, что защита упирается в вызов внешней функции keysbrxx.P0 и последующей иницализации диспетчера функций, через которую и происходит вызов методов в сборке. В архиве данного dll нет.



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

Создано: 24 сентября 2013 08:35
· Личное сообщение · #9

4kusNick пишет:
MethodBodyReader не отдаст сырые байты, он парсит при чтении.

Припоминается что в SAE есть функция дампануть бади в файл и назад



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

Создано: 24 сентября 2013 11:26
· Личное сообщение · #10

sendersu пишет:
Припоминается что в SAE есть функция дампануть бади в файл и назад

SAE использует патченый Mono.Cecil я как раз и "допиливал" его под чтение/запись тела метода в массив байт
А здесь речь идет о dnlib (если я правильно понял) или каких-то других библиотеках работающих с Net сборками



Ранг: 2.0 (гость), 2thx
Активность: 0=0
Статус: Участник

Создано: 27 сентября 2013 03:26 · Поправил: SSTREGG
· Личное сообщение · #11

KingSise
последний de4dot нормально снял.

ILProtector использовался старый, последний добавляет статическое поле int a в <Module>

deb1_27.09.2013_EXELAB.rU.tgz - Altair-keyboard-cleaned.exe

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

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

Создано: 27 сентября 2013 23:19 · Поправил: ADMIN-CRACK
· Личное сообщение · #12

Вроде не видел этого сабжа тут.
Довольно интересный.
http://digitalbodyguard.com/graywolf.html

PS: Плохо искал, проскакивал.
Извиняюсь.




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 29 сентября 2013 11:53
· Личное сообщение · #13

Вроде в шапке нет, http://www.netdecompiler.com/

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 30 сентября 2013 14:14
· Личное сообщение · #14

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

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 02 октября 2013 19:32
· Личное сообщение · #15

Господа... и дамы (если такие имеются)!!!!!
Один маленький вопрос)))
Схематично что? я должен поправить в NET PE- файле в случае если я в одном из методов увеличил Method.Body на 10 байт...?
Из вводных к вопросу
1.Размер секции кода менять не нужно
2.Заголовок файла полностью серилизован.(DOS-header,PE-header,Data section c CLR directory).Все таблицы как на ладони))))

З.Ы. Ногами не пинать))))) я не колобок



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 03 октября 2013 20:19
· Личное сообщение · #16

Биля..... Господ и дам по ходу нет - ни одного совета



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

Создано: 03 октября 2013 20:33
· Личное сообщение · #17

Medsft
Да просто никто не знает. Может ничего менять и не нужно? А может мету поправить только.

-----
старый пень





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

Создано: 03 октября 2013 23:02
· Личное сообщение · #18

Medsft
вопрос некорректный. что значит увеличили Method.Body? изменили размер в заголовке метода? если так то понятно что и тело должно быть увеличено на столько же, иначе в метод попадёт незнамо чо).
Если же вы используете например моно, и где то там меняете размер метода, то хз что будет) предлагаю поменять и посмотреть)

-----
zzz




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 октября 2013 13:51 · Поправил: Medsft
· Личное сообщение · #19

zeppe1in пишет:
вопрос некорректный
- согласен наверное...
Опишу подробнее
-берем файло превращаем в байт массив (до этого выяснили rva метода )
-берем их него секцию содержащую код
находим в секции место где лежит наш метод (обращаю внимание его Body!!!)
делим секцию на два куска один от начала до конца метода(его Body!!!) второй соответственно вся оставшаяся часть с нулями для выравнивания
и раздвигаем данные на к примеру 10 байт
затем все это обратно в льем в filestream
имеем на выходе
размер файла не изменился
физический размер секции не изменился
ясен пень изменились адреса методов что ниже вклееного нами куска - их поменяю (зная на сколько мы увеличили сам метод) соответственно всем на столько в таблице сдвинем rva
а еще чего надо изменить в заголовке файла то?

Кривое получилось наверное обьяснение ну уж извините




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 04 октября 2013 14:51
· Личное сообщение · #20

Medsft
сырки рефлексила не спасают (если правильно понял)?

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 04 октября 2013 15:39
· Личное сообщение · #21

Рефлексил юзает сесил, а Medsft как я понял сам пытается править, без либ сторонних, дваже сырки сесила ему не помогут, т.к. там пересобирается вся сборка.

Medsft
Так вы пробовали в текущем виде результат проверять? Может ничего и не надо менять кроме смещений остальных методов?

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 октября 2013 16:29 · Поправил: Medsft
· Личное сообщение · #22

4kusNick пишет:
Так вы пробовали в текущем виде результат проверять?
- чето не хватает не робит..(

Обьясню для чего мне это надо..
Лабаю PatcherNet -это я его так назвал))))) некую dll для прямого патчинга NET-файла. Сторонние библы типа DNLib, NETPE, MetadataReader - используются только для того чтобы разпарсить мету, тело метода, и превратить его в байт-массив, все дальнейшие операции по патчингу производятся строго на уровне byte-патч в filestreame (как вы уже догадались все остальные варианты с защищенными файлами не робят). Уже сейчас могу: нопить любые инструкции, обращать условные переходы т.е. могу делать все че угодно при условии что тело метода не меняет своего размера. И вот настало время когда хочется раздвигать или сдвигать тела методов поэтому и возник етот вопрос



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 октября 2013 16:36
· Личное сообщение · #23

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



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

Создано: 04 октября 2013 16:39 · Поправил: HaRpY
· Личное сообщение · #24

Medsft пишет:
Обьясню для чего мне это надо..

Тогда стоит изучить документ http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf
По сути вопроса, если не ошибаюсь, до достаточно только указывать валидный RVA в таблице MethodDef и не забывать про выравнивание адресов начала тел методов. В общем, кури доку там много чего полезного



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 октября 2013 16:56
· Личное сообщение · #25

HaRpY пишет:
В общем, кури доку там много чего полезного
HaRpY открыл доку ... ей абитуриентов кто на программерские факультеты поступать хочет, пугать )))) за пару деньков так до вступительного экзамена нака типа почитай документик ... сто пудов прогеров в разы меньше было



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

Создано: 04 октября 2013 17:05 · Поправил: HaRpY
· Личное сообщение · #26

Дык, не наизусть же учить заставляют
I I . 2 5 . 4 - Полезная инфа и про выравнивание методов есть
Я думаю, что авторы вышеперечисленных библиотек, данный док штудировали конкретно...



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 октября 2013 17:22
· Личное сообщение · #27

может в execptionhanderax затык?



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

Создано: 04 октября 2013 17:27 · Поправил: HaRpY
· Личное сообщение · #28

Medsft пишет:
может в execptionhanderax затык?

Ты писал, что увеличивал метод на 10 байт, что не кратно 4. Выравнивание fat-методов "поплыло". Так работать не будет. Ну это навскидку...
А так чтобы не гадать, прикладывай тестовую сборку до/после патчей.



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 октября 2013 17:34
· Личное сообщение · #29

HaRpY пишет:
Ты писал, что увеличивал метод на 10 байт, что не кратно 4. Выравнивание fat-методов "поплыло". Так работать не будет. Ну это на вскидку...
так с этим разобрался путем:
сначала делаем с методом че хотим в DNLibe потом оттуда получаем байт-массив с инфой о методе т.е. сам метод выглядит не прикопаешься... а потом етот массив впиливаем в наш файлстим, корректируем таблицу методов... пока все



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 04 октября 2013 17:39
· Личное сообщение · #30

Размер смещения узнаем size метода старый - size новый




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 04 октября 2013 18:26 · Поправил: ZaZa
· Личное сообщение · #31

Medsft
Вопрос немного не по теме:
Medsft пишет:
Лабаю PatcherNet -это я его так назвал))))) некую dll для прямого патчинга NET-файла.

Это что за проект такой у Вас? Можно чуток поподробнее? DLL - плагин какой?

P.S. Можно в личку...

-----
One death is a tragedy, one million is a statistic.



<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 49 . 50 . >>
 eXeL@B —› Основной форум —› Взлом dotNET программ
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати