加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Frida应用基础及APP https证书验证破解

发布时间:2019-06-03 21:30:08 所属栏目:建站 来源:牛冠杰
导读:一、Frida简介 1. 基础介绍 Frida是适用于开发人员、逆向工程师和安全研究人员的轻量级Hook工具,它允许将JavaScript代码或库注入Windows、macOS、GNU / Linux、iOS、Android和QNX上的本机应用程序。此外, Frida还提供了一些基于Frida API构建的简单工具

构造完整脚本如下:

  1. import frida, sys 
  2.   
  3. def on_message(message, data): 
  4.     if message['type'] == 'send': 
  5.         print("[*] {0}".format(message['payload'])) 
  6.     else: 
  7.         print(message) 
  8.   
  9. jscode = """ 
  10. Java.perform(function () { 
  11.     var HttpClientSslHelper = Java.use('com.frankzhu.androidhttpsdemo.HttpClientSslHelper'); 
  12.     var Log = Java.use('android.util.Log'); 
  13.     HttpClientSslHelper.getSslContextByCustomTrustManager.implementation = function () { 
  14.         var X509TrustManager = Java.use('javax.net.ssl.X509TrustManager'); 
  15.         var SSLContext = Java.use('javax.net.ssl.SSLContext'); 
  16.         var TrustManager = Java.registerClass({ 
  17.             name: 'com.frankzhu.androidhttpsdemo.test', 
  18.             implements: [X509TrustManager], 
  19.             methods: { 
  20.                 checkClientTrusted: function (chain, authType) { 
  21.                 }, 
  22.                 checkServerTrusted: function (chain, authType) { 
  23.                     Log.d("Frida Hook checkServerTrusted()", "Success!!!"); 
  24.                     send("Frida Hook checkServerTrusted() Success!!!"); 
  25.                 }, 
  26.                 getAcceptedIssuers: function () { 
  27.                     return []; 
  28.                 } 
  29.             } 
  30.         }); 
  31.         // Prepare the TrustManagers array to pass to HttpClientSslHelper.sslContext.init() 
  32.         var TrustManagers = [TrustManager.$new()]; 
  33.         send("Custom, Empty TrustManager ready"); 
  34.         // Override the init method, specifying our new TrustManager 
  35.         var sslContext = SSLContext.getInstance("TLS"); 
  36.         sslContext.init(null, TrustManagers, null); 
  37.         //return的值类型必须与原来的相同,否则会出现Error: Implementation for getSslContextByCustomTrustManager expected return value compatible with 'javax.net.ssl.SSLContext',同时导致应用崩溃 
  38.         //源码里有private static SSLContext sslContext = null;如果想通过this.sslContext使用该变量,一定要注意Hook的时机,要在sslContext变为对象后再Hook,这样就不会出现应用异常崩溃 
  39.         return sslContext; 
  40.     } 
  41. }); 
  42. """ 
  43.   
  44. process = frida.get_remote_device().attach('com.frankzhu.androidhttpsdemo') 
  45. script = process.create_script(jscode) 
  46. script.on('message', on_message) 
  47. script.load() 
  48. sys.stdin.read() 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读