爬虫学习8

Frida是一个动态代码插桩工具,允许开发者在运行时修改和调试应用程序

  1. import ...:这行代码表示导入所需的模块或库,但具体的导入内容在图片中被省略了。

  2. rdev = frida.get_remote_device():这行代码获取一个远程设备实例,通常用于连接到非本地设备,如通过USB连接的Android设备。

  3. session = rdev.attach("com.shizhuang.duapp"):这行代码将Frida会话附加到指定的应用程序上。在这里,"com.shizhuang.duapp"是目标应用程序的包名,Frida会话将用于与这个应用程序进行交互。

  4. scr = """...""":这是一个多行字符串,通常用于定义要注入到目标应用程序中的JavaScript代码。在图片中,具体的脚本内容被省略了。

  5. script = session.create_script(scr):这行代码使用之前定义的脚本内容创建一个Frida脚本对象。

  6. def on_message(message, data): ...:这是一个回调函数的定义,用于处理从目标应用程序发送回Frida的消息。message参数通常包含脚本执行的结果或错误信息,而data参数可能包含额外的数据。

  7. script.on("message", on_message):这行代码设置了一个事件监听器,当脚本发送消息时,将调用on_message函数。

  8. script.load():最后,这行代码加载并注入之前创建的脚本到目标应用程序中。

src里面是js的代码

直接运行

点击出发机制运行 666 999 666 999

深入分析次方法:

开始去so层搞c代码

反编译so文件,看看他的C代码是如何实现的。

IDA出来吧!!!

先找exports,

基于frida去hook so文件中某个JNI函数。 模拟器无法完成so中的JNI函数(app中只提供了arm32,6架构 )

so层的hook代码

总结:

=

sign的计算方法如下:

  1. 把 url中的参数放入map中
  2. 把uuid、platform、v、loginToken放入map中
  3. 对map中的元素按key进行排序
  4. 把map中的元素按keyvalue形式拼接成字符串
  5. 在字符串末尾拼接一个常量字符串
  6. 计算字符串的md5

newSign的计算方法跟sign比较相似,只是最后是先对构建的字符串AES加密,然后再计算md5,加密部分是在libJNIEncrypt.so中实现

相关推荐
非优秀程序员3 小时前
第07章 孙德良的阳谋|《互联网产品恩仇录》
javascript·后端
非优秀程序员4 小时前
第05章 播放器大战,暴风、快播与那一夜|《互联网产品恩仇录》
算法
沐晓时光5 小时前
C语言入门,内存函数知识讲解
c语言·开发语言
程序员大阳7 小时前
HTML+CSS+JS对话式实战(5)-活动管理页之查看报名名单的实现
javascript·css·html·查看报名名单
用户956256254298 小时前
跟做:Firecrawl 单页转 Markdown 再丢进沙箱总结
python·api
威哥爱编程9 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
威哥爱编程9 小时前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos
2601_967980119 小时前
Python行情API量化 02:顺序拉 20 要 2 秒?并发批量把时间压到 0.5 秒
python·api·限流·并发·量化
伞伞悦读9 小时前
【第81期】特征缩放怎么选:标准化、MinMax 与 Robust 的原理、泄漏对照和完整实验
人工智能·python·深度学习·机器学习