新发现一个简单有效的.net程序破解方法(可破隐藏IL级别的保护) 转
做过程序破解的同学都知道,一般的破解分为静态和动态两种,对于动态的破解,大家比较常用ollydbg,其虽然非常强悍,但貌似对.net程序支持不是很好,呵呵也许是我使用不够熟练吧。对于.net程序,我们知道,它类似于Java,编译后只是编译成了一种中间码(IL),其高于汇编但低于高等语言如C#,Java之类。其运行时候需要一个运行时,然后在需要的时候才进行JIT,根据当前系统平台将IL转成汇编码。 普通的保护也就是做些混淆,加上强签名,再加上SuppressIldasmAttribute属性禁止Ildasm,相应的破解方法也比较简单,使用修改过的ildasm就可以将相应的IL导出来,然后修改IL代码,再使用ilasm将之编译回去,破解也就完成了。
不过呢,目前也有一些比较好的.net程序保护工具可以将IL隐藏,如国内的Maxtocode。今天下午我就遇到了一个该类型的保护程序。我使用ildasm打开后查看到所有的方法内容IL都是下边这样:
.method public hidebysig static voidMethodName(class System.Windows.Forms.Control contrl,
string text) cil managed noinlining
{
// 代码大小 4 (0x4)
.maxstack4
IL_0000:nop
IL_0001:nop
IL_0002:nop
IL_0003:ret
} // end of method CallCtrlWithThreadSafetyEx::SetText
这样的话即使将它们导出也无意义,即使我们使用反射动态的获取它们的IL,也会得到我上边的结果,显然这样的保护做的已经是非常好了。
那么我们就没有办法了么? 正当我觉得山穷水尽的时候,突然想起来为什么不使用windbg呢。 我们知道任何的保护它都不应该破坏程序的正常逻辑和行为,那么.net的JIT机制是不是也应该还是有效呢?如果有效的话,那么我们是否可以通过windbg的!u addr命令来反编译得到代码呢,说干就干,我立刻挂上目标程序,果不其然,!dumpil得到的依然是上边说到的Il内容,但!U却能得到正确的完整的逻辑。
既然已经得到的汇编代码,那就好办了,使用windbg的ed命令修改一下关键的指令,立刻工作。哈哈,太完美了,下边我就将我的完整破解过程列出来,以防以后忘记。
本来准备将博客中的文章粘贴到这的,可发现粘贴过来后格式、图片全丢了,那详细步骤大家可以移步:http://www.xioxu.com/?p=326010
有朋友说上边地址访问不了,哈哈,没办法我的网站部署在GAE上边,常这样。所以我刚将文章转成了pdf格式,感兴趣的同学请---下载---。
存储在Box.net的 下载地址http://www.box.net/shared/cfx9vbxd7h
玩net的都是大牛. 很不错,学习了。 NET是很难搞 虽然转的是很老的一个教程了,但是还是谢谢楼主,有心了! NET的文章还真不多 学习了,谢谢分享! .ET的文章还真不多,学习了,谢谢分享~~ memory DUMP 脱壳后的dll可以用OD破解吗
页:
[1]
2