cqc520 发表于 2022-7-10 20:42

fiddler everywhere 3.3.0 去除授权校验

本帖最后由 cqc520 于 2022-7-16 07:20 编辑


# 前言

软件应该都知道,一个跨平台抓包工具;

之前搞定3.2.0版本时,是准备在吾爱发的,但是一直没时间来发;

今天下午跟进3.3.0版本后,去搜索引擎自搜了一下,发现有人发在吾爱了 {:1_921:}
https://www.52pojie.cn/thread-1654205-1-1.html

笔者使用的是 Linux 操作系统,因而 dnspy, reflexil 等工具无法使用(也可能我没找到相关可视化工具),

故采用 AvaloniaILSpy + ilasm / ildasm 进行处理;

classic 版本也不支持 Linux,故有此 everywhere 的修改。

不提供成品,但是这个帖子((https://www.52pojie.cn/thread-1654857-1-1.html))里面有个github,我已经传上去了。

# 预处理

准备好 `ildasm` 与 `ilasm`

使用 `ildasm` 将 `Fiddler.WebUi.dll` 转换为 il 文件

使用 `ildasm` 将 `FiddlerBackendSDK.dll` 转换为 il 文件

## Linux 获取 ilasm (ildasm)

1. 安装好 dotnet,打开一个空文件夹并执行后续命令
2. dotnet new console -n test
3. cd test
4. dotnet add package Microsoft.NETCore.ILAsm (ILDAsm)
5. dotnet publish -c Release --self-contained --runtime linux-x64
6. export PATH=$(pwd)/bin/Release/netcoreapp3.1/linux-x64/publish:$PATH
7. ilasm (ildasm)

# 处理

## main.xxxx.js

> 为何在此进行修改?
>
> 这是使用控制台进行调试操作探索出来的。


打开 `fiddler/resources/app/out/WebServer/ClientApp/dist/main.xxx.js` 搜索 `updateUserLicense`

函数开始处添加:(请将 `Ie` 替换为参数名称)

```javascript
Ie.licenseInfo.currentLicense = "Pro"
Ie.licenseInfo.hasExpiredTrial = false
Ie.licenseInfo.isTrialAvailable = false
Ie.licenseInfo.hasValidLicense = true
```



## Fiddler.WebUi.il

> 如何知道修改此文件?
>
> 当修改 `main.js` 尝试调出控制台时,程序是不能启动的,通过程序提示找到关键代码

> 修改此文件去除文件校验,
>
> 在 3.3.0 版本开始 `main.xxx.js` 也被加入校验流程,在此之前此dll文件的修改是可选的。
>
> 去除 `TryOpenElectronMainScript` 的校验之后,可以修改 `app/out/main.js` 调出控制台

对两个函数 `TryOpenClientMainScript` 与 `TryOpenElectronMainScript` 做相同操作:

将函数体内容修改为 直接返回 `true`

删除函数内以下代码之前的所有代码(以下代码含义为 `return true;`)

```
IL_0208:/* 17   |                  */ ldc.i4.1
IL_0209:/* 2A   |                  */ ret
```



删除后大概这个效果:



## FiddlerBackendSDK.il

> 如何知道修改此文件?
>
> 这是通过替换验证服务器抓到的数据,操作有点麻烦;
>
> 不过,如果对验证服务器做较为详尽的复现,应该能实现离线化。


### method FiddlerBackendSDK.User.UserClient::GetBestAccount

搜索 `UserClient::GetBestAccount`

删除 IL_000d - IL_0020 对应 if 语句

删除 IL_003f - IL_0040 对应 `return null;` 语句



### method '<>c__DisplayClass18_0'::'<GetBestAccount>b__0'

搜索 `<GetBestAccount>b__0`

删除 IL_0000 - IL_0019 , 在 IL_001e 前插入 `ldc.i4.1`(即函数体直接返回 `true` )



## 禁用更新

修改 `fiddler/resources/app/out/main.js`:
索 `e.settingsService.get().autoUpdateSettings.disabled` 替换为 `true||e.settingsService.get().autoUpdateSettings.disabled`

cqc520 发表于 2022-7-15 22:25

孤狼微博 发表于 2022-7-14 01:01
如何知道修改此文件?

当修改 main.js 尝试调出控制台时,程序是不能启动的,通过程序提示找到关键代码
...

当修改 main.js 尝试调出Electron控制台时,程序不能启动,报错;
就是遇到了代码防修改机制;
但总归有个不让启动的提示,这时候通过反编译查找提示的字符串就能定位到防修改机制的关键代码;
去除相关校验之后就能调出Electron的控制台了。
(fiddler everywhere界面基于Electron的)

孤狼微博 发表于 2022-7-14 01:01

如何知道修改此文件?

当修改 main.js 尝试调出控制台时,程序是不能启动的,通过程序提示找到关键代码

修改此文件去除文件校验,

在 3.3.0 版本开始 main.xxx.js 也被加入校验流程,在此之前此dll文件的修改是可选的。

去除 TryOpenElectronMainScript 的校验之后,可以修改 app/out/main.js 调出控制台没有看懂

bean0283 发表于 2022-7-11 13:05

多谢大佬分享教程,已更新,可以使用

bbs119 发表于 2022-7-11 13:05

上次尝试自己跟着大佬的步骤改来着,改完后发现卡在账号无法登录,我没搞懂一个抓包工具为啥还要求登录账号

yks1985 发表于 2022-7-11 15:10

感谢大佬无私奉献。。。。

cqc520 发表于 2022-7-11 20:41

bbs119 发表于 2022-7-11 13:05
上次尝试自己跟着大佬的步骤改来着,改完后发现卡在账号无法登录,我没搞懂一个抓包工具为啥还要求登录账号

因为用的是账号付费模式,就必须登录获取“账号的购买信息”才能用软件。

andypku 发表于 2022-7-11 22:21

bean0283 发表于 2022-7-11 13:05
多谢大佬分享教程,已更新,可以使用

windows是不是不能用?

cqc520 发表于 2022-7-11 22:27

andypku 发表于 2022-7-11 22:21
windows是不是不能用?

理论上是通用的,因为dotnet跨平台。

bean0283 发表于 2022-7-12 08:25

andypku 发表于 2022-7-11 22:21
windows是不是不能用?

可以用,windows按此教程改一下校验,其他的部分参考我的帖子修改即可

photocs 发表于 2022-7-12 18:05

多谢谢教程分享!

rowite 发表于 2022-7-12 21:35

bean0283 发表于 2022-7-12 08:25
可以用,windows按此教程改一下校验,其他的部分参考我的帖子修改即可

大佬,校验是指Fiddler.WebUi.il这部分的修改吗?
页: [1] 2 3 4 5
查看完整版本: fiddler everywhere 3.3.0 去除授权校验