反编译过程中常用的正则

  get、set属性

在.NET的编译过程中get、set属性转化为get_func()、set_func(xxx)方法。

因此对于反编译出来的代码,逐个替换可能很慢,可以采用下面正则表达式分别进行查找替换: 

对于get访问器:
\.get_{[^\(\)]+}\(\)       替换为   \.\1 

对于set访问器:

\.set_{[^\(]+}\({[^\)]+}\)      替换为   \.\1 = \2

 

如果上面的无法正常使用也可以使用:

对于get访问器:
get_{[a-z]*}\(\)          替换为   \1 

对于set访问器:

set_{[a-z]*}\(           替换为   \1 = ( 

然后再修复个别被误换的地方。

本文地址:http://www.cnblogs.com/Interkey/p/link_1.html

  索引器

对于***.get_Item(num)  可以通过 \.get_Item\({[a-z]+}\)  替换为  [\1]

对于***.get_Item(0)   可以通过 \.get_Item\({[0-9]+}\)  替换为  [\1]

对于***.get_Item()   其实也就是一个get访问器,所以不需要额外处理。

上述两种的通用正则为:

\.get_Item\({[a-z|0-9]+}\)  替换为  [\1]

注意:

不能使用\.get_Item\({[a-z|0-9]*}\),

虽然它能处理***.get_Item(num)、***.get_Item(0)、***.get_Item()三种情况,但它将***.get_Item()作为索引器而非属性来处理而出错!

本文地址:http://www.cnblogs.com/Interkey/p/link_1.html

  事件的订阅与取消

对于事件的订阅可以使用

\.add_{[a-zA-Z]+}    替换为  \.\1 +=

同样,对于事件的取消订阅可以使用

\.remove_{[a-zA-Z]+}   替换为    \.\1 -= 

本文地址:http://www.cnblogs.com/Interkey/p/link_1.html

  说明

上述正则本人在Visual Studio 2010中亲测可行,但为了您的利益,请在操作前进行相应备份。

内容原创,转载请保留原文链接~

本文地址:http://www.cnblogs.com/Interkey/p/link_1.html

欢迎加群:.NET反编译|破解 群号:183569712(请输入验证信息:博客园). .NET反编译|破解 

  更多

正则表达式入门教程

反编译过程中可能遇到的问题

posted on   Cosmic_Spy  阅读(1718)  评论(2编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

Your IP:
点击右上角即可分享
微信分享提示

返回顶部