Сейчас на форуме: Rio (+10 невидимых) |
eXeL@B —› Основной форум —› Отладка и patch программ написанных на .NET |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 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, это что за странные соотвествия джампу ? |
|
Создано: 05 декабря 2004 10:58 · Личное сообщение · #2 |
|
Создано: 05 декабря 2004 11:03 · Личное сообщение · #3 |
|
Создано: 05 декабря 2004 11:19 · Личное сообщение · #4 |
|
Создано: 05 декабря 2004 11:25 · Личное сообщение · #5 |
|
Создано: 05 декабря 2004 11:53 · Личное сообщение · #6 |
|
Создано: 05 декабря 2004 12:05 · Личное сообщение · #7 |
|
Создано: 05 декабря 2004 13:22 · Поправил: sanniassin · Личное сообщение · #8 |
|
Создано: 05 декабря 2004 23:16 · Личное сообщение · #9 |
|
Создано: 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). Где мне нужно "её" записать и желательно опкоды команды. |
|
Создано: 27 августа 2005 15:28 · Личное сообщение · #11 |
|
Создано: 27 августа 2005 16:07 · Личное сообщение · #12 Я для .NET прог юзаю только 3 инструмента: Reflector (чтобы понять что патчить) ildasm (чтобы понять где патчить) hiew (чтобы пропатчить) Плохо конечно что нет тулзы, чтобы все в одном. Конечно можно было бы написать аналог ildasm'а, но с поддержкой патча, но времени совсем нет. Все никак не зарелижу 1.2 версию декомпиля ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 27 августа 2005 16:23 · Личное сообщение · #13 |
|
Создано: 27 августа 2005 16:40 · Личное сообщение · #14 |
|
Создано: 27 августа 2005 16:43 · Личное сообщение · #15 NIKOLA пишет: У меня всё есть, кроме ildasm (дохрена качать). ILDasm входит в поставку Visual Studio .NET. Если же у тебя нет студии, то сначала ее изучи, а потом уже берись проги на ней ломать. Благо щас микрософт студию нахаляву рассылает. Да и книжка по опкодам IL'а где то на exetools'ах валялась (поищи там на форуме в разделе туторов) ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 27 августа 2005 16:47 · Личное сообщение · #16 |
|
Создано: 27 августа 2005 17:08 · Личное сообщение · #17 |
|
Создано: 27 августа 2005 17:15 · Личное сообщение · #18 |
|
Создано: 27 августа 2005 17:19 · Личное сообщение · #19 |
|
Создано: 27 августа 2005 23:55 · Личное сообщение · #20 |
|
Создано: 28 августа 2005 10:16 · Личное сообщение · #21 |
|
Создано: 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 |
|
Создано: 28 августа 2005 11:16 · Личное сообщение · #23 |
|
Создано: 28 августа 2005 11:26 · Личное сообщение · #24 |
|
Создано: 28 августа 2005 12:41 · Личное сообщение · #25 |
|
Создано: 28 августа 2005 13:23 · Поправил: NIKOLA · Личное сообщение · #26 |
|
Создано: 28 августа 2005 23:39 · Личное сообщение · #27 Nimnul пишет: lol как ты hiew патчиш проги раскажика все нормальные проги имеют SN, и если ты ее так пропатчиш она работать не будет. Не знаю - все что патчил - все работает без проблем. Так как не всегда можно кейген написать, иногда авторы обфускаторы юзают. А о каком SN речь идет? Может я чего не понял ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! |
|
Создано: 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 |
|
Создано: 29 августа 2005 10:54 · Личное сообщение · #29 |
|
Создано: 29 августа 2005 13:19 · Поправил: Nimnul · Личное сообщение · #30 |
. 1 . 2 . >> |
eXeL@B —› Основной форум —› Отладка и patch программ написанных на .NET |