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

 eXeL@B —› Основной форум —› Отладка и patch программ написанных на .NET
. 1 . 2 . >>
Посл.ответ Сообщение

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

Создано: 05 декабря 2004 10:50 · Поправил: Модератор
· Личное сообщение · #1

Вобщем то имеем некую программу, при анализе которой PeID выплюнул:
Microsoft Visual C# / Basic .NET

после привлечения известного всем замечательного дизассемблера (ИДА) оно дало почти исходник ....

вобщем то все хорошо и не долго я искал то место которое надо пропатчить, но как это сделать ?

ИДА выдала вот это в том месте где надо патчить:

callvirt class System.String FirePanelXP.main::kc(class System.String username, class System.Object var1, class System.Object var2, class System.Object var3, class System.Object var4)
ldloc.0
ldc.i4.0
call int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StringTy pe::StrCmp(class System.String, class System.String, bool) -а вот тут бы отладить, и узнать ключ
ldc.i4.0
bne.un.s loc_7447 - вот это переход надо поменять!
ldstr "Thank You"
ldc.i4.0
ldnull


Вобщем то 2 вопроса:

1) чем можно сию прогу написаную на .НЕТ отладить
2) если отладить низзя, то как можно запатчить ?

З. Ы. прога юзает Frameworks

2З.Ы. в месте где стоит тот переход который мне надо пропатчить, в ИДЕ в Hex-view стоит 33 5B, это что за странные соотвествия джампу ?



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

Создано: 05 декабря 2004 10:58
· Личное сообщение · #2

Пропатч вместо 33 5b - 33 00



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

Создано: 05 декабря 2004 11:03
· Личное сообщение · #3

хмм ....


а откуда ты узнал ?

где можно об этом почитать ?

а если бы мне надо было вместо nop поставить бы безусловынй переход ?



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 05 декабря 2004 11:19
· Личное сообщение · #4

egor2fsys
А ты сделай свой проект на нет, а потом декомпильни, махом выяснишь какие опкоды к чему и как менять

-----
Подписи - ЗЛО! Нужно убирать!




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

Создано: 05 декабря 2004 11:25
· Личное сообщение · #5

ыгы
это надо НЕТ где то искать .....


мне просто откуда уважаемый sanniassin знает это ...




Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 05 декабря 2004 11:53
· Личное сообщение · #6

egor2fsys навена проделал ту работу, что посоветывал nice, за тебя )

-----
Пиво, сиськи, транс




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

Создано: 05 декабря 2004 12:05
· Личное сообщение · #7

ну пасиба



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

Создано: 05 декабря 2004 13:22 · Поправил: sanniassin
· Личное сообщение · #8

Просто не сложно догадаться, что 33 - это bne, а 5B - длина джампа. Ставим 0 и он прыгает на следующую за джампом команду



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

Создано: 05 декабря 2004 23:16
· Личное сообщение · #9

sanniassin
спасиба за пояснение




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

Создано: 27 августа 2005 15:05
· Личное сообщение · #10

Парни.
Помогите.
Вот код:

.method public instance bool compdatas(string inputA, string inputB) cil managed
{
      // Code Size: 82 byte(s)
      .maxstack 3
      .locals (
            bool flag1,
            bool flag2,
            int32 num1,
            unsigned int8[] buffer1,
            unsigned int8[] buffer2,
            int32 num2)
      L_0000: nop 
      L_0001: ldc.i4.1 
      L_0002: stloc.1 
      L_0003: nop 
      L_0004: ldarg.1 
      L_0005: call unsigned int8[] [mscorlib]System.Convert::FromBase64String(string)
      L_000a: stloc.3 
      L_000b: ldarg.2 
      L_000c: call unsigned int8[] [mscorlib]System.Convert::FromBase64String(string)
      L_0011: stloc.s buffer2
      L_0013: ldc.i4.0 
      L_0014: ldloc.3 
      L_0015: callvirt instance int32 [mscorlib]System.Array::get_Length()
      L_001a: ldc.i4.1 
      L_001b: sub.ovf 
      L_001c: stloc.s num2
      L_001e: stloc.2 
      L_001f: br.s L_0035
      L_0021: ldloc.3 
      L_0022: ldloc.2 
      L_0023: ldelem.u1 
      L_0024: ldloc.s buffer2
      L_0026: ldloc.2 
      L_0027: ldelem.u1 
      L_0028: beq.s L_002f
      L_002a: ldc.i4.0 
      L_002b: stloc.1 
      L_002c: nop 
      L_002d: br.s L_003a
      L_002f: nop 
      L_0030: nop 
      L_0031: ldloc.2 
      L_0032: ldc.i4.1 
      L_0033: add.ovf 
      L_0034: stloc.2 
      L_0035: ldloc.2 
      L_0036: ldloc.s num2
      L_0038: ble.s L_0021
      L_003a: leave.s L_004b
      L_003c: call void [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.ProjectD ata::SetProjectError([mscorlib]System.Exception)
      L_0041: nop 
      L_0042: ldc.i4.0 
      L_0043: stloc.1 
      L_0044: call void [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.ProjectD ata::ClearProjectError()
      L_0049: leave.s L_004b
      L_004b: nop 
      L_004c: ldloc.1 
      L_004d: stloc.0 
      L_004e: br.s L_0050
      L_0050: ldloc.0 
      L_0051: ret 
      .try L_0004 to L_003c catch [mscorlib]System.Exception handler L_003c to L_004b
}


Нужно, что бы эта функция возвращала еденицу (true).
Где мне нужно "её" записать и желательно опкоды команды.




Ранг: 55.8 (постоянный), 6thx
Активность: 0.030
Статус: Участник
[www.AHTeam.org]

Создано: 27 августа 2005 15:28
· Личное сообщение · #11

egor2fsys
Я же про эту прогу написал статью про ее кейгенинг. См. в разделе статей




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 27 августа 2005 16:07
· Личное сообщение · #12

Я для .NET прог юзаю только 3 инструмента:
Reflector (чтобы понять что патчить)
ildasm (чтобы понять где патчить)
hiew (чтобы пропатчить)

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

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





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

Создано: 27 августа 2005 16:23
· Личное сообщение · #13

GPcH пишет:
Я для .NET прог юзаю только 3 инструмента:
Reflector (чтобы понять что патчить)
ildasm (чтобы понять где патчить)
hiew (чтобы пропатчить)


У меня всё есть, кроме ildasm (дохрена качать).
А как по поводу вопроса ?




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 27 августа 2005 16:40
· Личное сообщение · #14

NIKOLA пишет:
А как по поводу вопроса ?

Прогу видеть надо... и самому скомпилять подобное... я же на память не помню опкоды команд IL'а... также как и найс методом соответствия их определяю

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 27 августа 2005 16:43
· Личное сообщение · #15

NIKOLA пишет:
У меня всё есть, кроме ildasm (дохрена качать).

ILDasm входит в поставку Visual Studio .NET. Если же у тебя нет студии, то сначала ее изучи, а потом уже берись проги на ней ломать. Благо щас микрософт студию нахаляву рассылает. Да и книжка по опкодам IL'а где то на exetools'ах валялась (поищи там на форуме в разделе туторов)

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




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

Создано: 27 августа 2005 16:47
· Личное сообщение · #16

msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cptutorials/html/ildasm_introduction.asp
__________
ЗЫ может поможет...
__________________
ps Хотелось бы учебник по .NET в электронном виде (для начинающих)




Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 27 августа 2005 17:08
· Личное сообщение · #17

GPcH пишет:
Благо щас микрософт студию нахаляву рассылает

Поделись ссылкой, плз

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться





Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 27 августа 2005 17:15
· Личное сообщение · #18

ValdiS
www.microsoft.com/emea/msdn/betaexperience/ruru/order.aspx




Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 27 августа 2005 17:19
· Личное сообщение · #19

Ara
Спасибо

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться





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

Создано: 27 августа 2005 23:55
· Личное сообщение · #20

Ara

Спасибо за ссылку. Заказал сибе диск. Будем ждать.
Ну а по теме, ни кто ни чего не подскажет ?




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 28 августа 2005 10:16
· Личное сообщение · #21

Про опкоды подробнее можно почитать здесь(ru) http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/cpref/html/frlrfSystemReflectionEmitOpCodesFieldsTopic.asp

-----
have a nice day





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 28 августа 2005 10:22 · Поправил: Nimnul
· Личное сообщение · #22

NIKOLA


> Спасибо за ссылку. Заказал сибе диск. Будем ждать.
> Ну а по теме, ни кто ни чего не подскажет ?

должно работать так:

L_004b: nop
L_004c: ldloc.1
L_004d: stloc.0
L_004e: br.s L_0050
L_0050: ldc.i4.1
L_0051: ret
.try L_0004 to L_003c catch [mscorlib]System.Exception handler L_003c to L_004b
}


Кинь ссылку на прогу если не поможет
 

-----
have a nice day





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 28 августа 2005 11:16
· Личное сообщение · #23

А если действие внутри функции не имеет полезной нагрузки тогда лучше сделать так:

method public instance bool compdatas(string inputA, string inputB) cil managed
{
.locals ( bool flag1 )
Ldarg.0
not
ret
}

-----
have a nice day





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 28 августа 2005 11:26
· Личное сообщение · #24

GPcH

Я для .NET прог юзаю только 3 инструмента:
Reflector (чтобы понять что патчить)
ildasm (чтобы понять где патчить)
hiew (чтобы пропатчить)


lol как ты hiew патчиш проги раскажика все нормальные проги имеют SN, и если ты ее так пропатчиш она работать не будет.

-----
have a nice day





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

Создано: 28 августа 2005 12:41
· Личное сообщение · #25

NIKOLA пишет:
Заказал сибе диск. Будем ждать


У меня с ноутом шла Win_XP лицензионная (ноут в Штатах покупался) - заказывал себе Service Pack II у Microsoft ещё в ОКТЯБРЕ (чтоб настоящий тоже был) - до сих пор жду ;))))

Проще найти в ларьках у метро...




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

Создано: 28 августа 2005 13:23 · Поправил: NIKOLA
· Личное сообщение · #26

estet пишет:
заказывал себе Service Pack II у Microsoft


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

Nimnul пишет:
Про опкоды подробнее можно почитать здесь(ru)


Сначало почитаю про опкоды, потом скажу получилось или нет.

Прогу брал здесь. http://kaan.nm.ru/programs/traffic_beta2.exe




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 28 августа 2005 23:39
· Личное сообщение · #27

Nimnul пишет:
lol как ты hiew патчиш проги раскажика все нормальные проги имеют SN, и если ты ее так пропатчиш она работать не будет.

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

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 29 августа 2005 04:55 · Поправил: Nimnul
· Личное сообщение · #28

гы как же ты патчил если не знаеш что такое SN? Strong Name хеш-подпись исполняемого файла, пример:

.custom instance void [mscorlib]System.Reflection.AssemblyKeyNameAttribute::.ctor(string) = ( 01 00 00 00 00 )
.permissionset reqmin = (3C 00 50 00 65 00 72 00 6D 00 69 00 73 00 73 00 // <.P.e.r.m.i.s.s.
69 00 6F 00 6E 00 53 00 65 00 74 00 20 00 63 00 // i.o.n.S.e.t. .c.
6C 00 61 00 73 00 73 00 3D 00 22 00 53 00 79 00 // l.a.s.s.=.".S.y.
73 00 74 00 65 00 6D 00 2E 00 53 00 65 00 63 00 // s.t.e.m...S.e.c.
75 00 72 00 69 00 74 00 79 00 2E 00 50 00 65 00 // u.r.i.t.y...P.e.
72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n.
53 00 65 00 74 00 22 00 0D 00 0A 00 20 00 20 00 // S.e.t."..... . .
20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . .
20 00 20 00 20 00 20 00 20 00 76 00 65 00 72 00 // . . . . .v.e.r.
73 00 69 00 6F 00 6E 00 3D 00 22 00 31 00 22 00 // s.i.o.n.=.".1.".
3E 00 0D 00 0A 00 20 00 20 00 20 00 3C 00 49 00 // >..... . . .<.I.
50 00 65 00 72 00 6D 00 69 00 73 00 73 00 69 00 // P.e.r.m.i.s.s.i.
6F 00 6E 00 20 00 63 00 6C 00 61 00 73 00 73 00 // o.n. .c.l.a.s.s.
3D 00 22 00 53 00 79 00 73 00 74 00 65 00 6D 00 // =.".S.y.s.t.e.m.
2E 00 53 00 65 00 63 00 75 00 72 00 69 00 74 00 // ..S.e.c.u.r.i.t.
79 00 2E 00 50 00 65 00 72 00 6D 00 69 00 73 00 // y...P.e.r.m.i.s.
73 00 69 00 6F 00 6E 00 73 00 2E 00 53 00 65 00 // s.i.o.n.s...S.e.
63 00 75 00 72 00 69 00 74 00 79 00 50 00 65 00 // c.u.r.i.t.y.P.e.
72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n.
2C 00 20 00 6D 00 73 00 63 00 6F 00 72 00 6C 00 // ,. .m.s.c.o.r.l.
69 00 62 00 2C 00 20 00 56 00 65 00 72 00 73 00 // i.b.,. .V.e.r.s.
69 00 6F 00 6E 00 3D 00 31 00 2E 00 30 00 2E 00 // i.o.n.=.1...0...
35 00 30 00 30 00 30 00 2E 00 30 00 2C 00 20 00 // 5.0.0.0...0.,. .
43 00 75 00 6C 00 74 00 75 00 72 00 65 00 3D 00 // C.u.l.t.u.r.e.=.
6E 00 65 00 75 00 74 00 72 00 61 00 6C 00 2C 00 // n.e.u.t.r.a.l.,.
20 00 50 00 75 00 62 00 6C 00 69 00 63 00 4B 00 // .P.u.b.l.i.c.K.
65 00 79 00 54 00 6F 00 6B 00 65 00 6E 00 3D 00 // e.y.T.o.k.e.n.=.
62 00 37 00 37 00 61 00 35 00 63 00 35 00 36 00 // b.7.7.a.5.c.5.6.
31 00 39 00 33 00 34 00 65 00 30 00 38 00 39 00 // 1.9.3.4.e.0.8.9.
22 00 0D 00 0A 00 20 00 20 00 20 00 20 00 20 00 // "..... . . . . .
20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . .
20 00 20 00 20 00 76 00 65 00 72 00 73 00 69 00 // . . .v.e.r.s.i.
6F 00 6E 00 3D 00 22 00 31 00 22 00 0D 00 0A 00 // o.n.=.".1.".....
20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . .
20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . .
46 00 6C 00 61 00 67 00 73 00 3D 00 22 00 53 00 // F.l.a.g.s.=.".S.
6B 00 69 00 70 00 56 00 65 00 72 00 69 00 66 00 // k.i.p.V.e.r.i.f.
69 00 63 00 61 00 74 00 69 00 6F 00 6E 00 22 00 // i.c.a.t.i.o.n.".
2F 00 3E 00 0D 00 0A 00 3C 00 2F 00 50 00 65 00 // /.>.....<./.P.e.
72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n.
53 00 65 00 74 00 3E 00 0D 00 0A 00 ) // S.e.t.>.....
.publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 // .$..............
00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........
B9 64 65 47 71 2B D6 ED E1 45 65 CB 3A 91 F5 83 // .deGq+...Ee.:...
BE 30 FD 62 59 0B F6 7B 20 59 F2 56 7D D7 A3 EF // .0.bY..{ Y.V}...
68 F9 F0 7F C5 EF 2F E1 D0 C7 96 CA 0F D9 91 6D // h...../........m
3C 42 9E 79 32 3E 5D 83 D7 FE 6C C5 4B 9B 0D 63 // <B.y2>]...l.K..c
E6 E4 7F 8F 5F 52 9F 0E 00 A6 7A 5E 8C 4E 5C DB // ...._R....z^.N\.
33 BC 07 BA 4B 3D B8 93 33 58 0C E1 1F 06 67 5E // 3...K=..3X....g^
74 8B 4D EB F0 3A D0 02 14 2E B6 F8 E4 76 6C A2 // t.M..:.......vl.
0E 64 B9 6C 27 01 95 1D 90 96 2F E8 39 30 02 CE ) // .d.l'...../.90..
.hash algorithm 0x00008004
.ver 1:0:2065:24449


GPcH


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


Что бы патчить с помощью hiew это надо знать структуру метаданных, в метаданных прописанна вся инфа о методах, классах и т.д. там же лежит подпись. CLR при запуске проверяет эту подпись, а так как ты, что то поменял в hiew тогда он нифига не запустит, короче почитай документацию прежде чем понты клеить .


Вобщем ответы по сабжу:

Отладка:

1. Декомпилим прогу
ilasm myprog.exe /out:myprog.il

2. Ставим бряки:
в нужных местах расставить команду break

3. Компилим прогу
ilasm myprog.il /debug

4. Запускаем.
Если установленна VS2003 тогда будет такое окно:

Здесь два отладчика выбрать выделенный. Жмем ОК а потом много раз F10

PS: Точка входа в программу в IL называется .entrypoint, точка входа в класс .ctor .cctor

Патч

Для патча можно использоваеть
1. Reflector (все равно на привычном языке пряетнее смотреть то что ломаеш
2. ildasm - декомпил
3. ilasm - компил

PS: Не забывайте резать SN

e958_1.JPG

-----
have a nice day




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

Создано: 29 августа 2005 10:54
· Личное сообщение · #29

Strong Name подписаны далеко не все сборки. Так что не всегда его патчить приходится.




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 29 августа 2005 13:19 · Поправил: Nimnul
· Личное сообщение · #30

Sh[AHT]

Не видел не одной комерческой не подписанной


NIKOLA

Ну что ломанул ? можно уже свой вариант показываеть?

-----
have a nice day



. 1 . 2 . >>
 eXeL@B —› Основной форум —› Отладка и patch программ написанных на .NET
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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