.net逆向之:trycatch代码块和谐方法
本帖最后由 laohuang112 于 2020-3-16 16:15 编辑在用dnSpy逆向时常常会遇到try-catch异常捕捉代码块,如果该dll可以脱壳当然直接修改代码再回编译即可。但也经常会遇到少数一两个dll常规脱壳手段脱壳之后,软件无法正常运行,此时就需要直接对IL指令进行修改。
新手一枚,老鸟路过,敬请手下留情。
工具:dnSpy v6.1.3,最新发布版,https://github.com/0xd4d/dnSpy/releases
例如dnSpy打开某dll文件,找到license计算入口代码如下:
这里面的代码都是计算license用的,和谐思路就是,直接全部删除,再给两个本地字段赋值即可完成和谐过程。
右键点击方法体任何地方,选择编辑IL指令,
弹出以下窗口,
点击红色框,异常处理程序,
右键点击红色框,选择删除异常处理程序,或删除所有异常处理程序,
之后将所有IL指令删除,在增加几个指令,给该方法的两个本地字段赋值,即可完成和谐过程,
如果不首先删除异常处理程序,那么这里是无法点击确认的,也就是无法保存。以上是针对代码中有trycatch的和谐方法,具体软件名就不放出来了,纯粹探讨方法。
l403091644 发表于 2020-3-16 16:36
编辑该方法的时候,手动删除所有代码,直接赋值,会报错么?
如果该dll没有混淆加壳,可以直接赋值,不会报错。如果加了壳混淆,基本上直接修改代码再回编译,无法通过。 感谢分享以前一直不知道 老是遇到这样的问题 比如源码我不做任何修改 直接删除全部异常保存 会影响原来软件的功能不哪 感谢分享 编辑该方法的时候,手动删除所有代码,直接赋值,会报错么? 感谢分享,学习学习! 好帖,顶~~~
感谢分享 感谢分享~