各位老大们 上次发的那个破解maxtocode壳的库 得到加密算法的帖子没人顶了 也是因为我没发程序出来的原因 实在对不起啊
现在小弟有点问题想请教
我在程序运行的期间用OD把那个加密函数的IL代码给导出来了
如下
IL_0000: br IL_0007
IL_0005: pop
IL_0006: ret
IL_0007: ldarg.0
IL_0008: ldarg.1
IL_0009: call instance uint8[] ChinaMobile.ADTP.Client.FileDecryptor.LogFileDecryptor::O11OOllO011O01l00110OO01(string )
IL_000E: stloc.0
IL_000F: ldarg.0
IL_0010: ldloc.0
IL_0011: ldc.i4.1
IL_0012: call instance uint8[] ChinaMobile.ADTP.Client.FileDecryptor.LogFileDecryptor::O11OllOOOOlO1(uint8[] , int32 )
IL_0017: stloc.1
IL_0018: call class [mscorlib]System.Text.Encoding [mscorlib]System.Text.Encoding::get_Default()
IL_001D: ldloc.1
IL_001E: callvirt instance string [mscorlib]System.Text.Encoding::GetString(uint8[] )
IL_0023: ret
由于想偷懒 不想逐个去把IL读懂 再用C#写出来了
我就把 原来的加密库 用ildasm翻译成IL语言 然后修改一下又用ilasm把IL文件生成DLL 当然其中很多函数为空 我没管
然后我把上述的代码 直接放到能够生成的IL文件中去 加上个 .maxstack 8 然后继续生成DLL
这回生成了 我就想用REFLECTOR打开 结果还是出问题了 我想问下 这是什么原因呢?
如下是IL文件中 我添加进去的之后函数IL代码
.method private hidebysig instance uint8[]
O11OllOOOOlO1(uint8[] OO1ll1OlO,
int32 Ol00lO0) cil managed
{
// Code size 0 (0x0)
.maxstack
IL_0000: br IL_0007
IL_0005: pop
IL_0006: ret
IL_0007: ldarg.2
IL_0008: brtrue.s IL_0019
IL_000A: ldarg.0
IL_000B: ldarg.0
IL_000C: ldfld string ChinaMobile.ADTP.Client.FileDecryptor.LogFileDecryptor::OO00l1OO
IL_0011: call instance uint8[] ChinaMobile.ADTP.Client.FileDecryptor.LogFileDecryptor::O11OOllO011O01l00110OO01(string )
IL_0016: stloc.0
IL_0017: br.s IL_0026
IL_0019: ldarg.0
IL_001A: ldarg.0
IL_001B: ldfld string ChinaMobile.ADTP.Client.FileDecryptor.LogFileDecryptor::O1O0Oll10OO0l1llO1l
IL_0020: call instance uint8[] ChinaMobile.ADTP.Client.FileDecryptor.LogFileDecryptor::O11OOllO011O01l00110OO01(string )
IL_0025: stloc.0
IL_0026: ldarg.0
IL_0027: ldarg.1
IL_0028: ldloc.0
IL_0029: call instance uint8[] ChinaMobile.ADTP.Client.FileDecryptor.LogFileDecryptor::OlO0O1Olll(uint8[] , uint8[] )
IL_002E: ret
} // end of method LogFileDecryptor::O11OllOOOOlO1
难道是 IL_0005: pop
IL_0006: ret
这两句改成 nop 或者别的原因 求赐教啊 急等
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)