iOS热更新探究

  1. 在任意方法前后注入代码的能力,可能的话最好还能替换掉。
  2. 调用任意类/实例方法的能力。

使用 JSContext 开一个接口 然后进行oc方法的调用

聊聊 热更新
numberOfSections(in:)

所以现在有了两套热更新的方案

  1. JSPatch
  2. 使用 JSContext 开一个接口,使用Aspect 切面的调用方法

二期:
看jspatch 脚本下方与使用
在 Mac 终端上执行 openssl,再执行以下三句命令,生成 PKCS8 格式的 RSA 公私钥,执行过程中提示输入密码,密码为空(直接回车)就行。

openssl >

genrsa -out rsa_private_key.pem 1024

pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt

rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

3.使用私钥下发补丁

下发脚本时,选择本地的 rsa_private_key.pem 文件,与脚本一同上传,JSPatch 平台会使用这个上传的 Private Key 对脚本 MD5 值进行加密,再下发给客户端。若客户端经过上述第二步设置了对应的 Public Key,就会用设置的 Public Key 对脚本进行验证,验证通过后运行脚本,否则不会运行。

这里上传的 rsa_private_key.pem 只是一次性使用,不会保存在服务端,所以只有通过用户自己保存的 rsa_private_key.pem 文件才可以针对 APP 下发脚本,即使 JSPatch 平台或者七牛云被黑,第三方也无法对你的 APP 下发恶意脚本(可以下发,但验证不过,不会执行),保证安全性。rsa_private_key.pem 请妥善保管,避免泄露。

若担心此处私钥在网络传输中暴露,可以使用 JSPatch 补丁打包加密工具,在本地进行加密打包,无需上传私钥即可下发脚本。

你可能感兴趣的:(iOS热更新探究)