自上次分享net软件反编译相关已一年多,今天再次分享一点干货。
1、net反编译软件已经相当成熟,具有导出项目的能力。不过大型项目导出的错误修复仍然是最耗时的工作,并且初级开发人员容易将一些代码修复得不对逻辑但是这很难发现。
2、我手上用的dnspy和ilspy成为了我反编译工作的主力。
3、今年因一个项目需要完成了重新签名工具,dll拖进去,新的签名就完成了,可直接投入使用。几个项目测试下来,暂未发现任何问题。
4、ilmerge在解决多程序集合上起到很大作用,多个dll可以合并成为一个dll使用。
5、对于多个被obsfuscator混淆并有依赖关系的dll,不能直接de4dot,否则类型的引用将被打乱。
6、我的处理方式 :解密字符串(我自己写的工具)->limerge合并dll(顺序需要尝试)->de4dot->重新签名->最终dll->源码(可选)
7、很多的dll里面可能使用了三方源码,并且因为算法复杂,反编译出源码后,编译错误很多,多是类型转换错误,逻辑跳转问题编译不过,修复起来相当麻烦。
这种情况找出关键词,搜到对应版本的源码替换之。
8、dnguard成为很多开发者首选加密方式,新版反编译工具尚未流出或开发出来。前几天更新的win10版本,手里几个dnguard加密的程序启动后毫无反应。
尝试静态反汇编hvmruntime,流程比较深,多是算法操作内存,跟了两天发现眼睛受不了遂放弃。。。
9、java的byte其实是net的sbyte