吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17461|回复: 177
收起左侧

[Android 原创] 安卓协议逆向之frida hook百例

    [复制链接]
xiaoc996 发表于 2022-11-12 18:21
本帖最后由 xiaoc996 于 2022-11-12 20:04 编辑

安卓协议逆向之frida hook百例

各位下午好 我是一位往Android安全方向走的小菜鸟一枚 目前也是很努力在学 这个系列也会一直更新 记录自己的学习过程 大佬多担待担待 有出错的地方也帮忙指出

frida hook环境

1. pycharm(python,JavaScript)
2.安卓模拟器(觉得哪个好用就用哪个)
3.frida配置(frida是配置在python的)
4.jadx-gui (反编译工具)
(后续有其他工具再贴 以上的工具论坛已经有很多大佬教过安装和配置了 这里就不赘述了)

目标app

SHB9Bp8hYYgXQMYBQViZQF==(题目:仿射后的base)

分析过程

刨析内容

此处是fd抓的password login 的提交

提交的data:  

appid (app标识)  
sign(加密)
appversion(app版本)
channelid(好像也是一个标识吧反正固定的)
pwd (密码(加密))
udid (加密)
username (手机号)

共有三处加密 一个sign  一个pwd 这两个初步看是md5  还有一个udid 一开始还以为是base加密 丢进base全家桶解密结果不是 那就暂定AES或RSA吧

pwd|sign分析

该说不说 是骡子是马直接丢jadx

好家伙搜sign这么多地址 那咱怎么可能一个个看 直接搜login.ashx

那咋办嘛 进来之后 看到这里string了一个对象 是login_url 那就应该会有调用他的地方进行post提交 直接搜这个对象看看

果不其然 这里拼接了一个username 和pwd  还能看到有个encodemd5 里面传了个str3 str3还是一个被传进来的参数 这里应该就是对pwd进行加密的地方 双击进入这个方法 真相就要水落石出了

md5的模子  直接给他hook下来

#####python代码块
import frida  # 导入frida模块
import sys  # 导入sys模块
def on_message(message, data):  # js中执行send函数后要回调的函数
print(message)# 打印回调的函数
session = frida.get_remote_device().attach('name')  # app名字
with open("./hook.js",encoding='utf-8') as f:script = session.create_script(f.read())# 找到我们写好的hook脚本 然后进行注入
script.on('message', on_message)  # 加载回调函数,也就是js中执行send函数规定要执行的python函数
script.load()  # 加载脚本

sys.stdin.read()#进行程序阻塞 让我们进行调试  如果不加这段会直接允许会直接结束代码 CTRL+D可以直接结束程序
##JS代码块
Java.perform(function (){
Java.use('com.autohome.ahkit.utils.SecurityUtil').encodeMD5.implementation=function (data){          ///function里面的data是要劫持的函数 
///com.autohome.ahkit.utils <文件名 package>
///SecurityUtil <类名 class> 
///encodeMD5 <函数名 调用的方法名>
console.log(data); ///打印此函数
return this.encodeMD5(data);///劫持完代码看一下怎么个事就给你反回去
 }
});

好家伙 点一下登陆 有两处调用了这里  第一个应该是密码 pwd  第二个可能是sign 经过抓包检验 确实是我们要的sign参数 只是抓到的包里面的sign参数是经过md5到大写  

事已至此 sign or pwd的encrypt到此结束

udid分析


通过我们对sign的劫持 我们取到了一串明文  接下来还是继续分割出来 发现了udid在这里就已经进行了加密  然后pwd也是加密了  pwd没什么好说的 在刚才的hook中已经知道他是先加密了pwd再进行拼接 然后把这个拼接完的数据继续入参进行md5加密成sign   以下是对udid的分析  

依旧是无脑定位大法  搜udid 看到getudid直接进
(接下来看图吧 以下是找udid的生成过程)





到这里 就给大家简单说一下 这个udid的生成   

HiAnalyticsConstant.REPORT_VAL_SEPARATOR 这玩意转到声明  实际上就是一个|  分割用的
getIMEI(context)  这里是获取了你的设备号
System.nanoTime  这里是调用了系统方法 查了下好像是生成随机时间的?
# SPUtils.getDeviceId() device iD 设备ID? 后面发现这里是抓包获取到的 设备号固定这个值也固定

udid的生成找到了  最后是通过encode3Des进行加密  如果不懂什么是3Des加密的可以去上网搜一下

Java.perform(function (){
Java.use('com.autohome.ahkit.AHAPIHelper').getDesKey.implementation=function (mDesKey){///function里面的data是要劫持的函数
var key = this.getDesKey(mDesKey)

     console.log(key)
   return key;///劫持完代码看一下怎么个事就给你反回去

 }
});


key找到了 大概过程也分析完了  我们尝试hook一下拿到明文然后自己还原校验一下

OK 成功 至此分析过程已经完毕


结束语

感谢各位的阅读 学逆向很累 但是喜欢的事还是得坚持下去 后面还是输出更好的例子给大家学习 我个人也在很努力的学习 跟大家一共共进步

话说本来想输出js的逆向百例的 但是论坛已经很多大佬输出这类了 而Android逆向的确很少 自己也攻这方面不久 也想记录一下自己的成长

免费评分

参与人数 64吾爱币 +65 热心值 +61 收起 理由
bytesong + 1 热心回复!
天空宫阙 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lover1989 + 1 + 1 我很赞同!
debug_cat + 1 + 1 我很赞同!
miadaydream + 1 用心讨论,共获提升!
junjia215 + 1 + 1 谢谢@Thanks!
418 + 1 + 1 我很赞同!
Zhaofeiyan + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yihama1 + 1 + 1 谢谢@Thanks!
N.A.T + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hbqjxhw + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
shamemist + 1 + 1 用心讨论,共获提升!
private1215 + 1 我很赞同!
iifly + 1 + 1 用心讨论,共获提升!
gunxsword + 1 + 1 谢谢@Thanks!
zz9537 + 1 + 1 我很赞同!
Schwarz + 1 + 1 我很赞同!
NMBFND + 1 + 1 鼓励转贴优秀软件安全工具和文档!
美的随想 + 1 + 1 我很赞同!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Golive180 + 1 + 1 谢谢@Thanks!
liusan1990 + 1 + 1 谢谢@Thanks!
chongciyibai + 1 + 1 我很赞同!
maturewong + 1 用心讨论,共获提升!
ofo + 3 + 1 谢谢@Thanks!
xiniu233 + 1 + 1 我很赞同!
qaz1023 + 1 + 1 热心回复!
pear1234 + 1 + 1 热心回复!
养鸡场厂长 + 1 + 1 谢谢@Thanks!
Quincy379 + 1 + 1 用心讨论,共获提升!
Z146459 + 1 谢谢@Thanks!
wotf65448 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
heyimyh + 1 谢谢@Thanks!
flyii + 1 + 1 谢谢@Thanks!
GuJiayi2007 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
anger1013 + 1 + 1 我很赞同!
d3solate + 1 + 1 用心讨论,共获提升!
chenxuan24 + 1 谢谢@Thanks!
ohouyang + 1 + 1 谢谢@Thanks!
Huibq120 + 1 + 1 谢谢@Thanks!
努力加载中 + 1 + 1 热心回复!
mengxin521 + 1 + 1 用心讨论,共获提升!
Shahd7 + 1 + 1 热心回复!
duanjia0912 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
allspark + 1 + 1 用心讨论,共获提升!
hehehero + 1 + 1 用心讨论,共获提升!
Cerem + 1 + 1 热心回复!
红烧排骨 + 1 我很赞同!
1433233 + 1 + 1 谢谢@Thanks!
zhoumeto + 1 + 1 用心讨论,共获提升!
zxxwuai + 1 + 1 谢谢@Thanks!
pollex + 1 + 1 谢谢@Thanks!
陈陈不吃梨 + 1 用心讨论,共获提升!
kuiur0810 + 1 + 1 大佬牛逼!!
wieder01 + 1 + 1 谢谢@Thanks!
杨辣子 + 1 + 1 热心回复!
熊猫拍板砖 + 1 + 1 我很赞同!
liu5201314 + 1 谢谢@Thanks!
郑札 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
到最後受了傷 + 1 + 1 谢谢@Thanks!
库克船长什么样 + 1 + 1 热心回复!
qq4625817 + 1 + 1 过程很清楚啊,nice
末初 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
我是不会改名的 + 4 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

unkindled 发表于 2022-11-14 19:45
xiaoc996 发表于 2022-11-14 17:13
你可以试试两次base 确实需要点脑洞  两次base都是不一样的哦

base不是base64吗,还是我搞错了。hook分析到是简单易懂,这个app名字加密给我整晕了
 楼主| xiaoc996 发表于 2022-11-14 20:06
unkindled 发表于 2022-11-14 19:45
base不是base64吗,还是我搞错了。hook分析到是简单易懂,这个app名字加密给我整晕了

ctf有此类题  可以看看学习一下 你可以试试一次base64 再base32
Clannad77 发表于 2022-11-12 18:59
 楼主| xiaoc996 发表于 2022-11-12 19:00

排版乱了 我好难受
Clannad77 发表于 2022-11-12 19:03
只能说下次注意
甜萝 发表于 2022-11-12 19:24
加油 未来的网安工程师(hacker)
linxidd 发表于 2022-11-12 19:40
顶顶顶,很全
qfxldhw 发表于 2022-11-12 21:04

哎呦!很不错!
Brainy97 发表于 2022-11-12 22:09
学到了,很受益!
jayfox 发表于 2022-11-12 22:35
很好  很不错  值得学习
正己 发表于 2022-11-12 23:35
加油更新哦,这个系列给你加个精华,期待大佬后续佳作
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 13:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表