Windows爆破之路——.NET C#逆向

本文介绍了.NET C#程序的逆向分析过程,重点讲解了如何通过ILDASM和ILASM工具提取及编译IL代码。C#程序编译后生成的exe文件包含IL字节码,而非直接的机器码。利用反编译工具如JetBrains的dotPeek,可以解析IL代码并理解程序逻辑。了解这些工具和流程对于C#程序的调试和修改具有重要意义。
摘要由CSDN通过智能技术生成

接上篇Windows系统C/C++逆向分析。

今天主要介绍一下.NET C#程序的逆向分析过程。众所周知,C#语言是对JAVA语言系统的升华。汇集JAVA面向对象的思想,同时也将微软传统MSVC/VC++的优点发挥的淋漓尽致。跟JAVA类似,C#也是一种解释型语言,编译完同样会生成字节码文件,在程序运行时,借助它自己的解释器进行实时解释运行。C#的字节码中间语言称为IL语言,其解释器一般是指CLR,类比于JAVA的JVM。当然,C#的解释器不限于CLR,现阶段开源软件Mono也实现了一个C#解释器。而且,Mono不仅能运行在Windows上,还能运行在Linux上。不过Mono本来就是为了在Linux上运行.NET C#。

C#使用csc进行编译,编译生成的可执行文件也是exe格式文件。但不同于C/C++编译出来的程序,使用dumpbin反编译C#的exe文件,并不能帮助我们分析程序。因为C#语言系统在C/C++之上又抽象了一层,.text代码段虽然还能解析出部分C语言代码段,但主体逻辑都存储在IL中。所以,我们需要工具进一步来分析exe文件中的IL代码块。然后进一步解析出C#源码。

介绍一些.NET C#的逆向工具:

ildasm:将从exe提取出IL代码

ilasm:将IL代码编译成exe可执行文件

dotpeek:Jetbrains家族的用于反编译C#程序的工具,也可反编译为IL

关于ilasm和ildasm一般在安装visual studio时,会自动安装。当然,你得是.NET C#开发。ilasm工具一般跟.net framework在同一路径下,一般是C:\Windows\Microsoft.NET\Framework对应版本下。ildasm工具一般在C:\Program Files (x86)\Microsoft SDKs\Windows对应版本下。

将exe反编译成IL字节码命令:

ildasm program.exe /output:program.il

将IL字节码再次编译成exe命令:

ilasm program.il /exe /output:program.modified.exe

当然,我们逆向有时是为了修改程序,改变它的一些行为,所以会在IL层次进行修改,改完后在恢复成exe文件。关于上述命令行工具的更多功能,请参考微软官方的文档:https://docs.microsoft.com/en-us/dotnet/framework/tools/

另外,只要涉及到IL中间语言的程序,都可以使用该工具分析。

语言之间的转化过程大致如上图。当然,有兴趣的也可以研究一下C#与IL的互相转化。今天暂且介绍这么多!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值