anyconnect 外部控制管理vpn连接

之前公司所有人都使用iPhone,为了方便微信网页测试,用AnyConnect来实现DNS推送,将微信的网页域名指向不同开发、测试环境的IP。

iOS可以使用Apple Configurator生成mobileconfig文件来配置AnyConnect。最早使用这份配置的时候,发现如果使用密码认证,即便配置文件里写了用户名和密码,iOS的AnyConnect还是会需要用户再输入一次密码。所以一直以来用AnyConnect做的各种解决方案都是使用证书的方式,将用户证书和CA证书一并集成到mobileconfig文件里。

不幸的是去年下半年的某天,突然就发现iOS的AnyConnect连上了VPN,但是DNS不生效了。
那会儿,iOS升级到10.2之后的某个版本,AnyConnect在iOS平台推出了新版客户端,老的改名Legacy了。

换了新版,同样的配置文件下发方式,这回问题更大了,直接连不上。日志里看到的内容大概是客户端不知道该用哪份证书进行身份验证。

研究了cisco的文档,发现可以用 anyconnect://connect 直接呼起客户端的连接操作,而这个链接iOS和Android都可用。

链接类似如下:
anyconnect://connect/?name=Int&host=vpn-internal.sskaje.me:8433&prefill_username=user&prefill_password=password&onsuccess=http%3A%2F%2Fsskaje.me%2Fsuccess

不过由于安全原因,AnyConnect默认将“外部控制”的功能关闭了。(其实,我之前一直以为这个是服务器可以推送客户端执行命令的功能,所以很敏感)
在设置中改为提示 或者 启用。

而,之前dns不生效的功能,现在只能开启 split-dns 了。

anyconnect 外部控制管理vpn连接 by @sskaje: https://sskaje.me/2018/02/anyconnect-%e5%a4%96%e9%83%a8%e6%8e%a7%e5%88%b6%e7%ae%a1%e7%90%86vpn%e8%bf%9e%e6%8e%a5/

Unity3d资源文件解密

这里只说 AssetBundle,只有思路。

1 废话般前提:逻辑上 AssetBundle 文件加密后肯定是需要解密了,再进行加载。

2 Unity 加载AssetBundle文件可以使用 AssetBundle.LoadFromFile,加载内存流可以用AssetBundle.LoadFromMemory 和 AssetBundle.LoadFromStream。
这些方法对应还有代Async后缀的异步加载方法。
文档在:https://docs.unity3d.com/ScriptReference/AssetBundle.html

3 打断点,看backtrace。

4 慢慢调试。

在我这个场景里,il2cpp dump是没有需求的。

贴一个bt

工具:
https://github.com/Perfare/UnityStudio
https://github.com/HearthSim/UnityPack

Unity3d资源文件解密 by @sskaje: https://sskaje.me/2018/02/unity3d-asset-bundle-decrypt/