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

 eXeL@B —› Основной форум —› Взлом dotNET программ
<< 1 ... 36 . 37 . 38 . 39 . 40 . 41 . 42 . 43 . 44 . 45 . 46 ... 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]



Ранг: 14.1 (новичок), 5thx
Активность: 0.030.01
Статус: Участник

Создано: 20 апреля 2015 15:49
· Личное сообщение · #2

Прошу совета по одной либе. Есть утилита для ГИС-системы ArcGIS (один файл всего). При изменении любого байта функционал перестаёт действовать. В том числе и после деобфусцирования (дотфускатор). Выяснил, что файл имеет подпись StrongName и с помощью admiralbebilitate снял её. Но даже после снятия SN функционал всё такой же не рабочий. Что может быть не так, кто сталкивался ?




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

Создано: 20 апреля 2015 18:01
· Личное сообщение · #3

Slinger
эта либа при установке запускает ESRIRegAsm.exe, которая в свою очередь запустит микросовтовский RegAsm.exe который добавит записи в реестр про эту либу. В этих записях фигурирует PublicKeyToken.
Предположу что когда ты просто меняешь байт то не работает из за проверки StrongName. А когда сносишь StrongName то PublicKeyToken становится null и не соответствует тому что в реестре. как то так)

-----
zzz





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

Создано: 06 мая 2015 08:49
· Личное сообщение · #4

The JustDecompile .NET decompiler engine has been open-sourced
--> Link <--

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


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

Создано: 09 мая 2015 22:51
· Личное сообщение · #5

Как сделать, чтобы шарповая сборка AnyCPU могла запускаться как 32 или 64 битное приложение в зависимости от параметров командной строки?
Например запускаю: myapp.exe /x86 - стартует как 32 битное, myapp.exe /x64 - как 64 битное



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

Создано: 09 мая 2015 23:54
· Личное сообщение · #6

jangle

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

Или посредника, который содержит в ресурсах две заранее скомпилированные версии вашей программы, передаете аргумент, запускается выбранная. Но не в домене существующего (если только не той же битности), а как новый процесс.

Или посредник будет динамически добавлять зависимость от x32, x64 dll и запускать сборку.



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

Создано: 19 мая 2015 12:52 · Поправил: YaroslavS
· Личное сообщение · #7

Подскажите пожалуйста, заранее прошу прощения если спрошу что-то очевидное:

1) какой из декомпиляторов выдает наиболее близкий к оригиналу C# код.

2) Если стоит задача декомпилировать и собрать приложение, которое часто обновляется и при этом обфусцировано, как (и чем) проще всего сравнивать деобфусцированные de4dot сборки, чтобы выявить изменения. Вообще это возможно? Можно ли как-то сопоставить имена в двух разных сборках после деобфускации, кроме как по контексту кода?

3) Есть ли какие-то способы - приемы автоматически улучшить код до или после декомпиляции? Вычистить возможно мусор от обфускатора, который не убрал de4dot.

4) Есть ли другие заслуживающие внимания варианты для отладки чужих сборок, кроме ilspy (сборка, которая выложена на форуме) и dile?

Спасибо.



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

Создано: 24 мая 2015 05:16
· Личное сообщение · #8

Здраствуйте есть ли какиенибуть модификации для de4dota чтобы снять последнюю agile.net ?
Заранее благодарен за ответ.



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

Создано: 24 мая 2015 13:43
· Личное сообщение · #9

YaroslavS пишет:
1) какой из декомпиляторов выдает наиболее близкий к оригиналу C# код.

идеально нету, один чтото свое делает хорошо, другой - иное..
из того, что можно пробовать - ILSpy, .NET Reflector, Telerik, dotPeek


YaroslavS пишет:
чтобы выявить изменения. Вообще это возможно?

ручная работа
и не факт что метадата будет совпадать, тогда вобще никак (ибо автоименатор в де4доте будет каждое время по иному звать имена)
если у вас 100+ классов то сочусвтвую

YaroslavS пишет:
Вычистить возможно мусор от обфускатора, который не убрал de4dot.

подпилить сам де4дот
он идет в сорсах, так что вперед и с песней
кстати у него GPLv3, все что до(делается) надо опенсорсить
YaroslavS пишет:
4) Есть ли другие заслуживающие внимания варианты для отладки чужих сборок, кроме ilspy (сборка, которая выложена на форуме) и dile?

для реал челов есть WinDbg + модуль для дотнета



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

Создано: 02 июня 2015 22:57
· Личное сообщение · #10

Объясните плиз вот есть кодес
Code:
  1. .method private hidebysig instance void  ST(string 1,
  2.                                                string 2,
  3.                                                string 3,
  4.                                                string 4,
  5.                                                string 5,
  6.                                                string 6,
  7.                                                string 7,
  8.                                                string 8,
  9.                                                string 9,
  10.                                                string a,
  11.                                                string b) cil managed
  12. {
  13.   // Размер кода:       146 (0x92)
  14.   .maxstack  5
  15.   .locals init (object[] V_0)
  16.   IL_0000:  ldc.i4     0x5aa02b
  17.   IL_0005:  ldarg.0
  18.   IL_0006:  ldc.i4     0xb
  19.   IL_000b:  newarr     [mscorlib]System.Object
  20.   IL_0010:  stloc.0
  21.   IL_0011:  ldloc.0
  22.   IL_0012:  ldc.i4     0x0
  23.   IL_0017:  ldarg      1
  24.   IL_001b:  stelem.ref
  25.   IL_001c:  ldloc.0
  26.   IL_001d:  ldc.i4     0x1
  27.   IL_0022:  ldarg      2
  28.   IL_0026:  stelem.ref
  29.   IL_0027:  ldloc.0
  30.   IL_0028:  ldc.i4     0x2
  31.   IL_002d:  ldarg      3
  32.   IL_0031:  stelem.ref
  33.   IL_0032:  ldloc.0
  34.   IL_0033:  ldc.i4     0x3
  35.   IL_0038:  ldarg      4
  36.   IL_003c:  stelem.ref
  37.   IL_003d:  ldloc.0
  38.   IL_003e:  ldc.i4     0x4
  39.   IL_0043:  ldarg     5
  40.   IL_0047:  stelem.ref
  41.   IL_0048:  ldloc.0
  42.   IL_0049:  ldc.i4     0x5
  43.   IL_004e:  ldarg      6
  44.   IL_0052:  stelem.ref
  45.   IL_0053:  ldloc.0
  46.   IL_0054:  ldc.i4     0x6
  47.   IL_0059:  ldarg      7
  48.   IL_005d:  stelem.ref
  49.   IL_005e:  ldloc.0
  50.   IL_005f:  ldc.i4     0x7
  51.   IL_0064:  ldarg     8
  52.   IL_0068:  stelem.ref
  53.   IL_0069:  ldloc.0
  54.   IL_006a:  ldc.i4     0x8
  55.   IL_006f:  ldarg      9
  56.   IL_0073:  stelem.ref
  57.   IL_0074:  ldloc.0
  58.   IL_0075:  ldc.i4     0x9
  59.   IL_007a:  ldarg      a
  60.   IL_007e:  stelem.ref
  61.   IL_007f:  ldloc.0
  62.   IL_0080:  ldc.i4     0xa
  63.   IL_0085:  ldarg      b
  64.   IL_0089:  stelem.ref
  65.   IL_008a:  ldloc.0
  66.   IL_008b:  call       object O.C::met(int32,
  67.                                                  object,
  68.                                                  object[])
  69.   IL_0090:  pop
  70.   IL_0091:  ret
  71. // end of method FormMain::ST
  72.  


Почему в проце 11 параметров а работает с 12-ью



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

Создано: 04 июня 2015 18:21
· Личное сообщение · #11

artkar пишет:
Почему в проце 11 параметров а работает с 12-ью
нулевой для выравнивания стека



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

Создано: 06 июня 2015 10:37
· Личное сообщение · #12

Medsft пишет:
нулевой для выравнивания стека


Да вроде нет, он ведь используеться в вызове O.C::met.......

Думаю это какой то подъиоб защиты



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

Создано: 06 июня 2015 12:52
· Личное сообщение · #13

artkar пишет:
method private hidebysig instance
11 параметров а работает с 12-ью

this же еще - ldarg.0

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


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

Создано: 16 июня 2015 18:31 · Поправил: AKAB
· Личное сообщение · #14

Assembly Comparer
[img] [/img]

http://www15.zippyshare.com/v/RK3CkHMF/file.html

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


Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 17 июня 2015 14:19
· Личное сообщение · #15

Есть ли у кого толковый тутор с примерами как патчить опкоды .net на лету?

Суть: У меня есть .net пакованное приложение, которое я вынужден каждый раз распаковывать, и патчить.
Хотелось бы написать к нему универсальный кряк в виде dll-ки, которая будет подгружаться вместе с жертвой и патчить в нужных местах опкоды по сигнатуре или по названию метода.

-----
StarForce и Themida ацтой!




Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 17 июня 2015 18:22
· Личное сообщение · #16

Maximus
Я использую лоадер https://www.sendspace.com/file/107hpu Он хучит getJit и при обработке нужного метода его патчит. Вархиве пример, но у меня на восьмерке не запустился - а так должен работать.

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


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

Создано: 17 июня 2015 18:55
· Личное сообщение · #17

все так же, как и натив патчить. вопрос, когда ловить нужное - это в сырках dedot покопаться или еще как, в зависимости от пакера. по названию метода - самостийное творить, имхо

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





Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 17 июня 2015 20:14
· Личное сообщение · #18

yanus0 метод понятен. Подскажи, это будет работать на .NET 4.0?
И еще вопрос, может есть сие чудо на дельфи?

-----
StarForce и Themida ацтой!




Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 17 июня 2015 21:29 · Поправил: yanus0
· Личное сообщение · #19

Maximus пишет:
Подскажи, это будет работать на .NET 4.0?

Должно.
может есть сие чудо на дельфи?
Нет. На дельфи там нужно много переводить структур из corinfo.h - вот если кто сделать из этого .lib чтобы в делфях прилинковать, тогда я думаю можно. Вообще код отсюда --> Link <-- Если что - спрашивай.
+ можно делать не внедрением в процес, если сложно отловить сам момент старта и т.д. - то через загрузку AppInit_DLLs можно сделать. При загрузке проверять правильный ли процес...

Добавлено спустя 5 минут
ajax пишет:
вопрос, когда ловить нужное

Там в сорсах лоадера есть проверка на контрольную суму кода в методе и на его имя. Тоесть можно фильтровать и патчить, только нужный метод.




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 17 июня 2015 21:55 · Поправил: Maximus
· Личное сообщение · #20

+ можно делать не внедрением в процес, если сложно отловить сам момент старта и т.д. - то через загрузку AppInit_DLLs можно сделать.

Да не, проблем с внедрением в приложение нет. Ответ на этот вопрос есть тут:
--> Link <--

Спасибо за наводку, попробую че нить соорудить с lib файлом, что бы нудно структуры не переписывать.

-----
StarForce и Themida ацтой!





Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 21 июня 2015 17:53 · Поправил: Maximus
· Личное сообщение · #21

Еще вопрос. Разобрал я С+ структуры и переложил на delphi, и теперь отлично перелавливаю методы и без проблем могу их патчить. Но я хочу пойти дальше и подложить вместо il кода программы полностью свой код.

Итак, у меня есть код:
Code:
  1.     L_0000: ldarg.0 
  2.     L_0001: ldarg.1 
  3.     L_0002: stfld string IDC.Core.HardwareData::<Bios>k__BackingField
  4.     L_0007: ret 

Опкод к нему:
$02,$03,$7D,$3E,$01,$00,$04,$2A

Моя задача, установить данную переменную в свое значение. Хочу подменить данный код на такой:
Code:
  1.     L_0000: ldarg.0 
  2.     L_0001: ldstr "234234234234234234"
  3.     L_0006: stfld string IDC.Core.HardwareData::<Bios>k__BackingField
  4.     L_000b: ret 

Опкод к нему:
$02,$72,$??,$??,$??,$??,$7D,$3E,$01,$00,$04,$2A

Эти опкоды отлично компилируются, но вот беда, я не знаю как передать ссылку на свою строку (вместо опкодов знаки вопроса)

Вопрос: Как мне передать ссылку на свое значение типа String, которое я хочу загрузить в программу?

-----
StarForce и Themida ацтой!




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

Создано: 21 июня 2015 23:44
· Личное сообщение · #22

Я бы нашел какую-то неиспользуемую или, скажем так, малоиспользуемую строку в коде, подменил ее на свою, нашел на нее опкод и вставил на место второй строчки...

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

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

Создано: 22 июня 2015 11:05
· Личное сообщение · #23

Maximus пишет:
Вопрос: Как мне передать ссылку на свое значение типа String, которое я хочу загрузить в программу?

Все пользовательские строки (для ldstr) жестко забиты в метаданные сборки в стрим #US
Новую строку добавить вряд ли получится (без пересборки метаданых) - обычно в стриме #US нет свободного места.
Так что, как писалось выше, только путем подмены уже существующей строки.
... Или посмотреть что за нативный код метода сгенерировал Jit, возможно получится пропатчить в нативе для конкретной задачи...

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


Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 22 июня 2015 11:07
· Личное сообщение · #24

Ок. Спасибо.

У меня тоже в голове были эти две идеи
1. Использовать строку из таблицы
2. Патчить откомпиленный натив код

Но думал, может есть еще более какие правильные методы

-----
StarForce и Themida ацтой!





Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 23 июня 2015 13:28 · Поправил: Maximus
· Личное сообщение · #25

Да, написать .Net патчер слету на Delphi еще тот треш.

Оставлю тут для тех, кто будет искать:

1. Ставим хук на getJit для .Net больше 2.0
Code:
  1. var getJit: function: DWORD; stdcall;
  2.     _RealCompProc: function (param1, param2, param3, param4, param5, param6: DWORD): DWORD; stdcall;
  3.     Addr, tDword, struct_getJit: DWORD;
  4. ...
  5. getJit:=GetProcAddress(GetModuleHandle('clrjit.dll'), 'getJit');
  6.  
  7. struct_getJit:=getJit;
  8. if struct_getJit<>0 then begin
  9.    _RealCompProc:=pointer(pdword(pdword(struct_getJit)^)^);
  10.  
  11.    Addr:=dword(@MyCompProc);
  12.    VirtualProtect(Pointer(pdword(struct_getJit)^), 4, PAGE_EXECUTE_READWRITE, tDword);
  13.    pdword(pdword(struct_getJit)^)^:=Addr;
  14.    VirtualProtect(Pointer(pdword(struct_getJit)^), 4, tDword, tDword);
  15. end;


2. После установки хука для компиляции будет вызываться наша процедура MyCompProc. В самой процедуре надо будет организовать вызов метода, который собственно и будет компилировать код (_RealCompProc)
Code:
  1. function MyCompProc (param1, param2, param3, param4, param5, param6: DWORD): DWORD; stdcall;
  2. var MethodName, ClassName: String;
  3. begin
  4.  
  5.    // Получаем имя класса и имя метода (нужно будет в будущем для определения места патча)
  6.    tDword:=pdword(pdword(param2+4)^+4)^+4+param2;
  7.    getMethodName:=pointer(pdword(pdword(tDword)^)^);
  8.    MethodName:=PChar(getMethodName(tDword, pdword(param3)^, @Addr));
  9.    ClassName:=PChar(pointer(Addr));
  10.  
  11.    // Тут будет патч IL-кода
  12.    ...
  13.  
  14.    // Если нужно, выводим в лог
  15.    // LogFileOutput('log', ClassName+':'+MethodName);
  16.  
  17.    // Компиляция метода
  18.    Result:=_RealCompProc (param1, param2, param3, param4, param5, param6);
  19.  
  20.    // Тут будет патч Native кода
  21.    ...
  22.  
  23. end;


3. Теперь можно патчить. Патчим IL код. offset = Смещение байта для патча относительно начала кода, oldbyte = старый байт, newbyte = новыйбайт
Code:
  1. if (MethodName='MethodForPatch') and (pbyte(pdword(param3+8)^+offset)^=oldbyte) then begin
  2.    VirtualProtect(Pointer(pdword(param3+8)^+offset), 1, PAGE_EXECUTE_READWRITE, tDword);
  3.    pbyte(pdword(param3+8)^+offset)^:=newbyte;
  4.    VirtualProtect(Pointer(pdword(param3+8)^+offset), 1, tDword, tDword);
  5. end;
  6.  
  7. // Компиляция метода
  8. Result:=_RealCompProc (param1, param2, param3, param4, param5, param6);


4. Полная подмена IL кода программы на свой код. В массиве my_code лежит мой код
Code:
  1. var my_code: array [0..SizeOfCode] of byte =($02,$72,$01,$00,$00,$70...);
  2. ...
  3. if (MethodName='MethodForPatch') then begin
  4.    pdword(param3+8)^  := dword (@my_code[0]);
  5.    pdword(param3+12):= sizeof(my_code) ;
  6. end;
  7.  
  8. // Компиляция метода
  9. Result:=_RealCompProc (param1, param2, param3, param4, param5, param6);


5. Патчим строку. Как писалось выше, строки компилятор берет из таблицы. Адрес строки высчитывается по формуле $70000000+смещение строки относительно начала таблицы. Я пошел по легкому пути и не стал изменять таблицу. Метод, который я предлагаю для патча следующий:
Code:
  1. // Сначала вызываем ldstr Строка. В данном коде загружаем первую строку в таблице
  2. var my_code: array [0..SizeOfCode] of byte =($02,$72,$01,$00,$00,$70...);
  3.     stroka: WideString;
  4. ...
  5. if (MethodName='MethodForPatch') then begin
  6.    pdword(param3+8)^  := dword (@my_code[0]);
  7.    pdword(param3+12):= sizeof(my_code) ;
  8. end;
  9.  
  10. // Компиляция метода
  11. Result:=_RealCompProc (param1, param2, param3, param4, param5, param6);
  12.  
  13. // Теперь в Native коде есть ссылка на строку в памяти (.Net скопировал ее из таблицы). Подменяем ее на нашу.
  14. if (MethodName='MethodForPatch') then begin
  15.    CopyMemory(pointer(pdword(pdword(pdword(param5)^+2)^)^+8),pointer(stroka), length(stroka)*2);
  16.  
  17.    // Если у строки отличная от нашей длина
  18.    pdword(pdword(pdword(pdword(param5)^+2)^)^+4)^:=length(stroka)*2;
  19. end;


6. Ну и напоследок патч Native кода
Code:
  1. // Компиляция метода
  2. Result:=_RealCompProc (param1, param2, param3, param4, param5, param6);
  3.  
  4. // Патчим код
  5. if (MethodName='MethodForPatch') and (pbyte(pdword(param5)^+offset)^=oldbyte) then begin
  6.    pbyte(pdword(param5)^+offset)^:=newbyte;
  7. end;


Дополнительно к своей писанине прилагаю простенький примерчик:

a212_24.06.2015_EXELAB.rU.tgz - 1.rar

-----
StarForce и Themida ацтой!


| Сообщение посчитали полезным: Apocalypse, 4kusNick, ajax, yanus0, igorca, zds, denis765600


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

Создано: 24 июня 2015 00:26
· Личное сообщение · #26

Maximus
лукс гут. пока не сильно вникал, лучше с утра. но, по синтаксису для совместимости с x64: pdword -> pnativeuint

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




Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 10 июля 2015 16:03
· Личное сообщение · #27

ILProtector умеет ктонить снимать?

-----
SaNX




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

Создано: 10 июля 2015 18:20
· Личное сообщение · #28

SaNX пишет:
ILProtector умеет ктонить снимать?

Так вы файл выложите,если не приват
Или сюда обратитесь https://exelab.ru/f/action=userinfo&user=20773 вроде он последний ilprotect ломал



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 10 июля 2015 18:22
· Личное сообщение · #29

igorca
https://exelab.ru/f/action=vthread&forum=2&topic=23172&page=16#5

http://rghost.ru/8mJwQ9BbS

-----
SaNX




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

Создано: 10 июля 2015 22:07
· Личное сообщение · #30

Возможно не все читают хабр, выложу сюда.
1) Несколько трюков в C# https://channel9.msdn.com/Events/DevCon/Russia-2015/BlueD2S05
2) Используем Roslyn для конверсии C# в C++ https://channel9.msdn.com/Events/DevCon/Russia-2015/Use-Roslyn-conversion-in-C--C-
3) Лучшие доклады конференции DevCon 2015 — Топ 10 http://habrahabr.ru/company/microsoft/blog/262289/



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

Создано: 11 июля 2015 07:45
· Личное сообщение · #31

SaNX пишет:
ILProtector умеет ктонить снимать?



4f97_11.07.2015_EXELAB.rU.tgz - ILProtectorUnpacker.7z

| Сообщение посчитали полезным: SaNX
<< 1 ... 36 . 37 . 38 . 39 . 40 . 41 . 42 . 43 . 44 . 45 . 46 ... 49 . 50 . >>
 eXeL@B —› Основной форум —› Взлом dotNET программ
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати