Fiddler .Net逆向


Fiddler .Net逆向

软件简介

是近来比较流行的 Electron 框架界面,比较方便开发,然后界面比较优美,代价是用户直接能看到源码。

破解过程

激活

审一下写在前端的代码,搜一下 License,果然发现了有关函数。

直接在函数入口点对激活信息进行覆盖,这一步过后其实已经成功破解了。但是软件在启动时会对每个模块load的数据进行校验,所以继续深入。

校验绕过

.Net 是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由 .Net 编译器 JIT 解释映象为本机代码并交付 CPU 执行。它和 Java 是同一种机制的语言。 这种语言的优点是:开发者不需要去考虑程序在哪里运行,只需要把功能做出来,虚拟机会在任何地方实现功能。 这是一个很好的想法,但虚拟机的中间语言由于带了大量的“元数据”(meta-data)信息,所以也极容易被反编译。

可以理解为可乐把配方分发到每个厂子,虽然每个厂子都可以配货,却让配方的保密性大大降低

最终在 Fiddler.WebUi.dll 中的 ScriptHelper 类的 TryOpenClientMainScript 方法中发现了校验过程。

如图,如果在 Line 35 校验失败的话,加载进程将终止。

License 验证

FiddlerBackendSDK.dllUserClient 类的 public AccountDTO GetBestAccount(UserWithBestAccountDTO user) 方法中给出了一个非常简单的账号验证。

public AccountDTO GetBestAccount(UserWithBestAccountDTO user)
{
	if (user.BestEverywhereAccountId != null)
	{
		return user.Accounts.FirstOrDefault((UserAccountDTO x) => x.Id == user.BestEverywhereAccountId.Value);
	}
	return null;
}

x.Id == user.BestEverywhereAccountId.Value 改为 true 即可 bypass

删除更新机制

在 main.js 中替换版本号或者直接防止进入函数即可


文章作者: sfc9982
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 sfc9982 !
  目录