rick大牛,已经写出了MaxtoCode得unpacker.太牛了。不知道是不是把所有的mathod都执行一遍,然后Dump-〉修复。

unpacker还不公开,所以像我这种小菜想破解MaxtoCode还得inline patch。

patch主程序不是很现实,因为原始的mathod已经被Kill了,运行的时候动态的填充。那怎么办呢?

很简单,随便在能运行到的method上内存写入断点,断下来后在system.data.dll里面,这个dll就是MaxtoCode的DLL,负责动态的解密IL.patch这个是不错的选择。

注意看断下来的地方的指令

mov dl,byte ptr [ecx+eax]
mov byte ptr [eax],dl

这里eax是被填充的地址,dl就是IL opcode.

上面的指令刚好是5 byte.so........
改为jmp xxxxxxxx(具体地址根据实际情况选择,选择reloc段不错)。

然后就可以Do what U want to do了
我做了这些:
mov dl,byte ptr [ecx+eax]
cmp eax,xxxxxxxx
jnz end
mov dl,xx
cmp eax xxxxxxxx
jnz end
mov dl,xx
end:
mov byte ptr [eax],dl
jmp xxxxxxxx

应该能看懂吧?

猜测:其实完全可以利用这个DLL做个unpacker。

TO Jason.NET:.NET保护只能走VFP那条路,自己接管EE,JITCompiler.但是那样.NET就失去了意义。所以目前没啥好办法保护.NET程序


rick的unpacker似乎只支持2.0.我也没见过,听说而已。这个方法1.0 2.0通吃。
可能利用MaxtoCode的DLL写unpacker可能是比较通吃也比较简便的办法