laohuang112 发表于 2020-3-16 16:09

.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的和谐方法,具体软件名就不放出来了,纯粹探讨方法。

laohuang112 发表于 2020-3-16 16:59

l403091644 发表于 2020-3-16 16:36
编辑该方法的时候,手动删除所有代码,直接赋值,会报错么?

如果该dll没有混淆加壳,可以直接赋值,不会报错。如果加了壳混淆,基本上直接修改代码再回编译,无法通过。

baifeng 发表于 2020-3-16 22:24

感谢分享以前一直不知道 老是遇到这样的问题   比如源码我不做任何修改 直接删除全部异常保存 会影响原来软件的功能不哪

我爱电脑 发表于 2020-3-16 16:12

感谢分享

jy04468108 发表于 2020-3-16 16:36

编辑该方法的时候,手动删除所有代码,直接赋值,会报错么?

jerry828 发表于 2020-3-16 16:40

感谢分享,学习学习!

74618cpu 发表于 2020-3-16 16:44

梁萧 发表于 2020-3-16 17:54

好帖,顶~~~

三胖胖胖 发表于 2020-3-16 18:12


感谢分享

zx575645128 发表于 2020-3-16 18:59

感谢分享~
页: [1] 2 3
查看完整版本: .net逆向之:trycatch代码块和谐方法