尝试修改跳转的函数地址

最近想到一劳永逸的破解js方案, 就是对setFileOperationDelegate就行修改。

void ScriptEngine::setFileOperationDelegate(const FileOperationDelegate& delegate)
{
    // _fileOperationDelegate = delegate;
  auto onGetStringFromFile = delegate.onGetStringFromFile;
  const_cast<FileOperationDelegate&>(delegate).onGetStringFromFile = [onGetStringFromFile](const std::string& path) -> std::string{
    return onGetStringFromFile(path+path);
  };
  _fileOperationDelegate = delegate;
}

此段二进制代码,已经插入到so文件中。

 

 现在需要修改setFileOperationDelegate的跳转地址,跳到刚插入二进制数据块那执行。

找到原有的函数跳转地址:

 

 跳到了0x5948.         需要计算出0x5948的实际地址:   0x54ac + 0x1e000 + 0xa00 = 0x23eac

对计算的地址进行验证,看是否正确:

 

是正确的, 现在就这里的5948数据, 改成刚插入二进制数据地址。   

插入的二进制数据文件偏移地址为:0x218A8

 

 修改完保存。上传到Android模拟器上运行:

 

经过论证,发现可行。 接下来将此方案进行实战。

 

posted @ 2020-08-29 11:36  浪浪辛  阅读(312)  评论(0)    收藏  举报