记录一次C#/.NET以及VB p-code/native的逆向破解

记录一次C#/.NET以及VB p-code/native的逆向破解

玩了5份样本,2份dotnet的,2份native的和1份pcode的。

dotnet framework程序

  • dotnet的相对会简单,只需要使用dnspy工具打开目标程序,找到逻辑点后,点编辑函数,然后去掉校验逻辑。随后保存到程序集即可。

  • 遇到加了混淆以后对外显示原始方法名称,但是点进去以后发现所有方法全都是直接返回null的。

    • 通过[DotNet Id_1.0.0.3](https://pan.baidu.com/s/1K5tQuynpYTS83gydNopKcg?pwd=tmnl) 提取码:tmnl 查壳发现其是`maxtocode`混淆的

    • 这种可通过de4dot_.NET_Reactor_v6.x_Modded 提取码:csz9。这种脱壳以后不会有乱码,注意后续Reactor产品可能也会继续升级,对应的反混淆工具也需要相应跟着一起升级。

VB程序

  • VB Decompiler

    • 基础的伪代码获取工具,可能会提示“file is packed”即使文件没有被加过壳

  • VBRezQ

    • VB的窗体和虚拟指令获取,但是如果对象是pcode编译,则只能获取到方法名,获取不到内容

  • VBDec

    • 同样也是获取窗体和虚拟指令的,但是可能会报错导致获取不全而中断

  • WKTVBDebugger

    • 动态调试pcode编译,并且以虚拟指令的方式显示,通过修改BranchE(1C)/T(1D)来变更目标程序的逻辑

以上几个工具下载 提取码:123t

脱壳

  • 其他的一些比较难的如VMProtect等壳,可以是通过esp原理使用动调的方式手动去掉

    • 壳往往都是通过对外界表现出黑匣子效应,对程序本身表现出透明效应。所以壳会在程序初始化的时候将堆栈保存下来,在解密完成后恢复堆栈。故往往会有pushad这样的指令,此时只要监控该栈位置,以发现在popad的位置,该位置离程序真正的main函数或者入口函数会非常接近。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值