在该app可以搜索关键词,选择微信后面的赛选进行排序:


发现如下加密参数:


未发现加固加壳方式:

我们直接搜索定位: package com.sogou.utils;


我们先hook下这个a方法看下传入的参数及结果:


先看这个用到了前三个参数:
那我们hook下这个 ScEncryptWall.encrypt(str5, str6, str7);

# -*- coding: utf-8 -*-
# @Author  : Codeoooimport sys
import fridaencrypt = """
Java.perform(function(){var lk = Java.use("com.sogou.scoretools.ScEncryptWall");lk.encrypt.implementation = function(a,b,c){console.log('参数str1 ' + a)  console.log('参数str2 ' + b)  console.log('参数str3 ' + c)  console.log('==== ' + this.encrypt(a,b,c))  return this.encrypt(a,b,c)}
});
"""process = frida.get_remote_device().attach('com.sogou.activity.src')
script = process.create_script(encrypt)
script.load()
sys.stdin.read()


这个方法就是加密的参数了。
可以看到传入参数:

参数str1: http://app.weixin.sogou.com/api/searchapp
参数str2 :type=2&ie=utf8&page=1&query=55&select_count=1&tsn=1&usip=
参数str3 :空

结果就是那几个字段,k, v ,p, ,r , g

查看是个so的方法,我们继续放下看下请求响应。


hook下decrypt方法:

# -*- coding: utf-8 -*-
# @Author  : Codeoooimport sys
import fridaencrypt = """
Java.perform(function(){var lk = Java.use("com.sogou.scoretools.ScEncryptWall");lk.encrypt.implementation = function(a,b,c){console.log('参数str1 ' + a)  console.log('参数str2 ' + b)  console.log('参数str3 ' + c)  console.log('==== ' + this.encrypt(a,b,c))  return this.encrypt(a,b,c)}
});
"""decrypt = """
Java.perform(function(){var lk = Java.use("com.sogou.scoretools.ScEncryptWall");lk.decrypt.implementation = function(a){console.log('参数str1 ' + a)  console.log('==== ' + JSON.stringify(this.decrypt(a)))   return this.decrypt(a)}
});
"""process = frida.get_remote_device().attach('com.sogou.activity.src')
script = process.create_script(decrypt)
script.load()
sys.stdin.read()


传进来的参数为刚刚加密的数据,解密出来是byte数组,需要将byte转化为字符串就是源码。

OK ,完美运行,可以采集rpc-主动调用+flask进行调用

so:   System.loadLibrary("SCoreTools");

后续 我们讲下 so层的分析【搜狗微信APP逆向(二)so层】

搜狗微信APP逆向(一)java层相关推荐

  1. 搜狗微信APP逆向(三)unidbg

    eg: 话不多说,这个apk如果是用unidbg调用的话,那就很简单,而且so层没有调用java层一些东西,都不用补环境. 上图吧: init: decrypt: encrypt: package c ...

  2. 搜狗微信APP逆向(二)so层

    接着上文:https://blog.csdn.net/weixin_38927522/article/details/124726015 本次分析搜狗app so 层加密相关逻辑. 首先在导出函数查找 ...

  3. 初识Frida--Android逆向之Java层hook (二)

    目录 初识Frida--Android逆向之Java层hook (二) apk的安装与分析 流程分析 hook点分析 JavaScript代码构造与执行 0x00 hook getMac() 0x01 ...

  4. 安卓逆向之JAVA层静态分析(愤怒的小鸟去广告,充值破解)

    安卓逆向之JAVA层静态分析(愤怒的小鸟去广告,充值破解) 前言 今天女票跟我吐槽,自己闲来无事下个愤怒的小鸟玩玩,结果又是实名认证,又是广告啥的,瞬间没心情玩了,我听后大惊,还有这种事.跟女票说:& ...

  5. 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)

    1. 安卓程序动态调试条件 安卓程序动态调试条件 ( 2个满足1个即可 ): 1. 在 AndroidMainfest.xml ---> application 标签下,设置或者添加属性 and ...

  6. 搜狗微信APP分析(二)so层

    接着上文:https://blog.csdn.net/weixin_38927522/article/details/124726015 本次分析搜狗app so 层加密相关逻辑. 首先在导出函数查找 ...

  7. 微信APP支付(基于Java实现微信APP支付)

    步骤: 导入maven依赖 <!--微信支付--><dependency><groupId>com.github.wxpay</groupId>< ...

  8. 微信APP支付(Java后台生成签名具体步骤)

    public class PayCommonUtil { //定义签名,微信根据参数字段的ASCII码值进行排序 加密签名,故使用SortMap进行参数排序 public static String ...

  9. 初识Frida--Android逆向之Java层hook (一)

    目录 0x00 文中用到的工具 0x01 hook示例的安装与分析 安装 源代码分析 0x02 frida自带的Messages机制与进程交互 0x03 Javascript代码构造与执行 方法一:获 ...

最新文章

  1. 手动配置lnmp环境
  2. Eclipse 启动问题:'Initilizing Java Tooling' has encountered a problem(。。。)
  3. TabLayout属性详解
  4. Dedicated and Shared Server
  5. 如何获取filecoin_Filecoin如何获取更大的出块机会?
  6. jzoj1402-偷懒的小X【贪心】
  7. TensorFlow 2.x GPU版在conda虚拟环境下安装步骤
  8. node.js ejs_如何在Node.js应用程序中使用EJS模板
  9. 数字图像处理 空间域高斯低通滤波 MATLAB实验
  10. MySQL-Cluster7.2.5安装和配置
  11. 并发编程(4)同步并发操作
  12. nginx配置 负载均衡_如何配置NGINX负载平衡
  13. sparse-to-dense.pytorch 代码主流程
  14. java indexof 参数_Java indexOf() 方法
  15. 高中计算机教室标语,高中教室布置标语
  16. Tomcat NIO、APR 对比
  17. excel交集和并集的意思_几个excel如何求并集
  18. 提升你的外国服务器网站国内访问速度~
  19. 动态规划——1292:宠物小精灵之收服(二维背包问题)
  20. VLAN与PVLAN的区别

热门文章

  1. 最长反链=最小链覆盖(证明+解析)
  2. 家庭网络中的各种网络连接方式介绍及各自特点
  3. 入境游平台http://cutetrip.com运营合作
  4. 空间、维度、尺度和变换
  5. 【数学】三角形内接平行四边形问题
  6. 微信40001错误,不合法的调用凭证,invalid credential, access_token is invalid or not latest hint
  7. js+css+html制作简易留言板
  8. ArcGIS制图之桂林山水
  9. 大周手把手教你,用手机获取视频剪辑素材,做短视频事半功倍
  10. 管理的终极之善是改变他人的生活