搜狗微信APP逆向(一)java层
在该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层相关推荐
- 搜狗微信APP逆向(三)unidbg
eg: 话不多说,这个apk如果是用unidbg调用的话,那就很简单,而且so层没有调用java层一些东西,都不用补环境. 上图吧: init: decrypt: encrypt: package c ...
- 搜狗微信APP逆向(二)so层
接着上文:https://blog.csdn.net/weixin_38927522/article/details/124726015 本次分析搜狗app so 层加密相关逻辑. 首先在导出函数查找 ...
- 初识Frida--Android逆向之Java层hook (二)
目录 初识Frida--Android逆向之Java层hook (二) apk的安装与分析 流程分析 hook点分析 JavaScript代码构造与执行 0x00 hook getMac() 0x01 ...
- 安卓逆向之JAVA层静态分析(愤怒的小鸟去广告,充值破解)
安卓逆向之JAVA层静态分析(愤怒的小鸟去广告,充值破解) 前言 今天女票跟我吐槽,自己闲来无事下个愤怒的小鸟玩玩,结果又是实名认证,又是广告啥的,瞬间没心情玩了,我听后大惊,还有这种事.跟女票说:& ...
- 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)
1. 安卓程序动态调试条件 安卓程序动态调试条件 ( 2个满足1个即可 ): 1. 在 AndroidMainfest.xml ---> application 标签下,设置或者添加属性 and ...
- 搜狗微信APP分析(二)so层
接着上文:https://blog.csdn.net/weixin_38927522/article/details/124726015 本次分析搜狗app so 层加密相关逻辑. 首先在导出函数查找 ...
- 微信APP支付(基于Java实现微信APP支付)
步骤: 导入maven依赖 <!--微信支付--><dependency><groupId>com.github.wxpay</groupId>< ...
- 微信APP支付(Java后台生成签名具体步骤)
public class PayCommonUtil { //定义签名,微信根据参数字段的ASCII码值进行排序 加密签名,故使用SortMap进行参数排序 public static String ...
- 初识Frida--Android逆向之Java层hook (一)
目录 0x00 文中用到的工具 0x01 hook示例的安装与分析 安装 源代码分析 0x02 frida自带的Messages机制与进程交互 0x03 Javascript代码构造与执行 方法一:获 ...
最新文章
- 手动配置lnmp环境
- Eclipse 启动问题:'Initilizing Java Tooling' has encountered a problem(。。。)
- TabLayout属性详解
- Dedicated and Shared Server
- 如何获取filecoin_Filecoin如何获取更大的出块机会?
- jzoj1402-偷懒的小X【贪心】
- TensorFlow 2.x GPU版在conda虚拟环境下安装步骤
- node.js ejs_如何在Node.js应用程序中使用EJS模板
- 数字图像处理 空间域高斯低通滤波 MATLAB实验
- MySQL-Cluster7.2.5安装和配置
- 并发编程(4)同步并发操作
- nginx配置 负载均衡_如何配置NGINX负载平衡
- sparse-to-dense.pytorch 代码主流程
- java indexof 参数_Java indexOf() 方法
- 高中计算机教室标语,高中教室布置标语
- Tomcat NIO、APR 对比
- excel交集和并集的意思_几个excel如何求并集
- 提升你的外国服务器网站国内访问速度~
- 动态规划——1292:宠物小精灵之收服(二维背包问题)
- VLAN与PVLAN的区别
热门文章
- 最长反链=最小链覆盖(证明+解析)
- 家庭网络中的各种网络连接方式介绍及各自特点
- 入境游平台http://cutetrip.com运营合作
- 空间、维度、尺度和变换
- 【数学】三角形内接平行四边形问题
- 微信40001错误,不合法的调用凭证,invalid credential, access_token is invalid or not latest hint
- js+css+html制作简易留言板
- ArcGIS制图之桂林山水
- 大周手把手教你,用手机获取视频剪辑素材,做短视频事半功倍
- 管理的终极之善是改变他人的生活