попалась очередная "чудная" программа которая хочет код, активацию по инету и т.д. на сайте полно декомпиляторов - воспользовался и быстро нашел нужную функцию и проверку : Код (Text): IL_0103: call bool [mscorlib]System.String::op_Equality(string, string) IL_0108: brfalse.s IL_010c IL_010a: ldc.i4.1 IL_010b: ret IL_010c: ldc.i4.0 IL_010d: ret и ... не знаю что делать дальше 1. Ни IDA, ни декомпиляторы не показывают адрес инструкций в файле. Как найти где расположен приведенный выше код ? 2. как пропатчит ? т.е. заменить ldc.i4.0 на ldc.i4.1. или "занопить" brfalse.s IL_010c ?
1. Декомпилировать в ildasm с ключом вывода смещений Пример: Код (Text): // Method begins at RVA 0x20ac // Code size 1031 (0x407) .maxstack 4 .locals /*11000001*/ init (class [mscorlib/*23000004*/]System.Resources.ResourceManager/*01000026*/ V_0) IL_0000: /* D0 | (02)000002 */ ldtoken ART.AntiAliasingOptions/*02000002*/ IL_0005: /* 28 | (0A)000010 */ call class [mscorlib/*23000004*/]System.Type/*01000024*/ [mscorlib/*23000004*/]System.Type/*01000024*/::GetTypeFromHandle(valuetype [mscorlib/*23000004*/]System.RuntimeTypeHandle/*01000025*/) /* 0A000010 */ IL_000a: /* 73 | (0A)000011 */ newobj instance void [mscorlib/*23000004*/]System.Resources.ResourceManager/*01000026*/::.ctor(class [mscorlib/*23000004*/]System.Type/*01000024*/) /* 0A000011 */ IL_000f: /* 0A | */ stloc.0 2. Патчить можно в данном случае, как нравится.
Кури strongname. И еще, что именно патчил? Просто занопить условный переход в IL не катит, надо стек выравнивать. Так что в твоем варианте самое оптимальное.
написал keygen - успокоился. падал в др. месте (не в месте патча) так как в серинике была зашифрованна "важная" информация. всем спасибо! Sh355 что такое "strongname" ?