Сейчас на форуме: 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, это что за странные соотвествия джампу ?




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

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

Nimnul пишет:
Ну что ломанул ?


Лень стало копать. Через пару дней займусь снова.


Nimnul пишет:
можно уже свой вариант показываеть?


По твоему желанию или скажи правильно я место нашёл где патчить или нет.




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

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

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

в аттаче твой реализованный метод
Все пропаченные места обозначенны //Crack

893b_traffic.rar

-----
have a nice day





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

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

Nimnul

Так я и ни хрена не понял с опкодами. Читал, пока глаза не заболели.
Плюнул нах. на это дело. Оставил на потом.




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

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

NIKOLA

А что конкретно ты не понял?

Вот к стати второй вариант тот о котором я говорил:
Мучался часа полтора, хренов компилятор, вот это условие проверяется так:
If Me.compdatas(StringType.FromObject(obj2), regact.nst(65536)) Then
я от сюда
//IL_0116: ldarg.0
//IL_0117: ldloc.3
//IL_0118: call string [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StringTy pe::FromObject(object)
//IL_011d: ldc.i4 0x10000
//IL_0122: call string networkexperiments.regact::nst(int32)
до сюда не вырезал, и тупил полтора часа немог дорубиться че за хня, т.к. отладчик вопил на обработчик исключений вот я и шарился выше думал мож там накосипорил
// IL_0127: callvirt instance bool networkexperiments.Form1::compdatas(string, string)
// IL_012c: ldc.i4.1
// IL_012d: bne.un IL_01e4 // все что ниже этой метки больше не пригодится
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Есть еще маленькие хитрости:
1. .maxstack 3
записи подобного рода можна бахать бес сожаления в методах которые правите

2. IL_0127
это метки и одновременно указатель на opcode len на это можно не обращать внимание, они работают только как метки

3. при декомпиле можно задать расширение .h т.е. ildasm myexe.exe /out:myexe.h - это для того что бы файл править редактором VS, всетаки синтаксис кое какой показывает и самое главное тама можна Многа! заремить , а если ставить расширение .cs тоже синтаксис подсвечивает, но студия умирает, т.к. в .cs она проверяет всяки синтакс ошибки, а в с+ только в момент компила.

4. D:\Program Files\traffic\Crack>ilasm networkexperiments.h /debug /listing /Clock >> log.txt

/listing показывает подробности компила в том числе опкоды, доп инфу и т.д.

log.txt потому что все в консоль не влазит

 



74c2_networkexperiments.rar

-----
have a nice day





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

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

Nimnul

Попробовал я пропатчить в хекс редакторе. Прога работает но запускается с ошибкой.
Еденицу положил туда, куда надо было.

Переделал по другому. Изменил условные переходы, как было написано в начале топика,
прога работает нормально и пишет registered.

Но, всётаки хотелось бы положить еденицу туда, куда надо.

Хотелось бы вкраце узнать:

Nimnul пишет:
PS: Не забывайте резать SN


Как ?



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

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

Как ?
в хедере меняешь ~1-ое вхождение 0x80 на 00




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

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

я в хекс редакторе даже заморачиваться не хочу резать SN, как? очень просто дизасемблиш, срезаеш, асемблиш. Темболее эта прога, это полный отстой, в плане защиты. CLR позволяет понатыкать проверки SN даже перед вызовом методов, более того можно делать проверки на то какой exe загрузил эту dll и все по SN, так что я пока еще не сада-маза что бы хекс едитором тама капашиться, да и еще есть сильное подозрение что после правки хекс едитором, если ты вырежеш кусок кода или вставиш прога завалится, т.к. в таблице метаданных прописанны стат адреса классов и методов. Иногда еще может потребываться после правки подписать сборку своим SN, это если сборка обязанна валяться в GAC. Так что не слушай нехороших людей , которые сбивают с пути истинного, ilasm\ildasm рулит, смотри мои примеры по меткам //Crack.

PS: что бы тебе компильнуть, то что я показывал в аттачах нужны еще ресурсы которые я туда не положил, но они сгенерятся после декомпила.

-----
have a nice day





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

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

Случаем ни у кого нет ключика к 9Rays.Spices.Net.




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

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

У меня есть но Виктор его разработчик мой корифан

-----
have a nice day





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

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

Nimnul пишет:
У меня есть но Виктор его разработчик мой корифан


Мог бы не писать. Ты ведь понял, что я имею ввиду.



Ранг: 40.9 (посетитель)
Активность: 0.020
Статус: Участник
diProtector Software

Создано: 05 июня 2006 22:54
· Личное сообщение · #12

кто нить может прилепить сюда ilasm.exe? у меня какая-то странная студия (2005 профессионал): ildasm.exe и куча другого есть, а ilasm-а нет...



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

Создано: 07 июня 2006 10:48
· Личное сообщение · #13

А ты его поищи в \WINDOWS\Microsoft.NET\Framework\




Ранг: 66.5 (постоянный)
Активность: 0.030
Статус: Участник
Повелитель ЗЛА

Создано: 09 июня 2006 12:40
· Личное сообщение · #14

Вот декомпилятор .NET прог.
www.9rays.net/products/spices.net/download/spices.zip
Может пригодиться...



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

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

Имхо .NET это тупиковая ветвь, и как бы мелкомягкие не продвигали ее все скоро забудется...



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

Создано: 11 июня 2006 21:45
· Личное сообщение · #16

Угу, про Java тоже так говорили. А ведь .NET это таже Java вот только пропиаренная как следует да и продвигаемая Micro$oft очень активно... Про форточки тоже кстати говорили что все это фуфло и ни кому не нужно



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

Создано: 11 июня 2006 23:31
· Личное сообщение · #17

Знаешь чем отличается .NET от Java? у java ест переносимость, а мелкие официально поддерживают вынь.вот и вся разница, .NET умрет!



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

Создано: 12 июня 2006 13:08
· Личное сообщение · #18

И когда? Умрет в смысле? Сколько ты ей еще даешь? Что-то я пока агонии не замечаю, как раз наоборот, все больше и больше разработчиков пересаживаются за C#.
Кстати, а многим ли нужна кросс-платформенность Java? Лично я знаю не так много софта, который в чистом виде работает, например и под Win32 и под Linux. В основном это всякая мелочь, кросс-платформенность которой и не нужна вовсе. А вот серьезный софт имеет разные пакеты инсталляции для тех же Win32 и Linux, потому что не хватает ему той платформо-независимости, которую предлагает Sun и приходится часть функционала реализовывать на нативном уровне, отдельно для Win32 и отдельно для Linux. Переносимость, как таковая, нужна очень небольшому числу разработчиков, которые в основном работают в корпоративном секторе, ИМХО. Вот вы сами пишите на Java? И как часто вы используете ее переносимость? И если используете, какое кол-во строк в ваших программах? Наверняка это небольшие поделки, ценные исключительно для вас.
Поэтому, мое личное мнение, что .NET будет жить.

Все выше сказанное ИМХО. Ничего личного. Сори за флейм.



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

Создано: 12 июня 2006 13:48
· Личное сообщение · #19

Я не судья чтобы срок давать, но тормознутость дотнета видна невооруженным глазом. это пустой спор. з.ы сорри за оффтоп, больше не буду))



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

Создано: 12 июня 2006 15:11
· Личное сообщение · #20

"Вооружите" взгляд - обратитесь к тестам производительности. Да это не натив, но драйвера на нем писать ни кто и не собирается. А для прикладных задачь само то. Вы, простите, на чем пишите?



Ранг: 15.3 (новичок)
Активность: 0.020
Статус: Участник

Создано: 12 июня 2006 16:11
· Личное сообщение · #21

back_analys пишет:
тормознутость дотнета видна невооруженным глазом

тормознут он при первом запуске когда компилит IL в натив код данной конкретной машины
дальше тягает уже скомпиленное
почитай книжки про архитектуру нета а потом поноси если найдешь что




Ранг: 66.5 (постоянный)
Активность: 0.030
Статус: Участник
Повелитель ЗЛА

Создано: 14 июня 2006 15:32
· Личное сообщение · #22

Декомпилятор .NET
public.int3.net/share/Decompiler.Net.V.rar




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

Создано: 15 июня 2006 03:18
· Личное сообщение · #23

Скорее натив умрет чем дотнет, а ведь так и будет, поговаривают что в висте весь АПИ будет дотнетовским, так что поживем увидим

-----
have a nice day




Ранг: 15.3 (новичок)
Активность: 0.020
Статус: Участник

Создано: 15 июня 2006 17:31
· Личное сообщение · #24

Nimnul пишет:
в висте весь АПИ будет дотнетовским

микрософт за совместимость удавиться
поэтому нормальный апи останется

back_analys пишет:
у java ест переносимость, а мелкие официально поддерживают вынь.вот и вся разница, .NET умрет!

есть такая бодяга Mono - реализация .Net под линукс



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

Создано: 18 июня 2006 08:04
· Личное сообщение · #25

Nimnul пишет:
поговаривают что в висте весь АПИ будет дотнетовским

Интересно, как это АПИ будет .NET'овским, если сами .NET'овские dll'ки импортируют стандартыне АПИ.



Ранг: 15.3 (новичок)
Активность: 0.020
Статус: Участник

Создано: 18 июня 2006 16:28
· Личное сообщение · #26

MiHaN пишет:
Интересно, как это АПИ будет .NET'овским, если сами .NET'овские dll'ки импортируют стандартыне АПИ.

очень просто нетовская либа может соcтоять из натив кода в который можно напихать int 2eh/sysenter


<< . 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 » Выход » ЛС
   Для печати Для печати