网站首页 > 开源技术 正文
011. 破解加密参数的步骤
1.1 ◆ 目标明确
首要任务是明确我们的目标:要获取某app接口中Signature加密参数的加密方式,该参数具有过期时间,且与当前时间紧密相关。为了破解这个加密参数,我们需要分几个步骤来进行。
1.2 ◆ 反编译与参数搜索
首先,我们可以尝试使用jadx这个强大的工具来反编译apk文件。将apk拖入jadx后,我们会看到如下的反编译结果:
可以看到,代码层面确实存在混淆,但参数名却无法被混淆。因此,我们可以尝试从参数名入手,进一步探索加密方式的奥秘。
使用Ctrl+Shift+F进行参数名称搜索,得到以下结果:
可以确定,加密的规则应该就是b,接下来我们需要找到与b相关的函数。
谜团逐渐揭开,我们已经确定了加密规则为hmacsha256的加盐哈希。然而,要完整解开谜题,我们还需要进一步探索两个关键要素:首先是“盐”,即图中所示的h.b()部分;其次是需要加密的原始字符串。经过深入分析,我们可以发现加密前的字符串是经过精心组装的。str4正是我们苦苦追寻的目标。简言之,一旦我们获取了str、str2和str3,便能推导出加密之前的原始字符串。
1.3 ◆ 使用Frida进行HOOK
接下来,我们进入第三步。这里,使用frida将变得轻而易举。直接上吧,选定你,frida!
首先,安装并熟悉frida。其官方文档地址为:[)虽然内容主要围绕API,但并不繁杂,很快就能掌握。
接下来,我们编写一个简单的hook代码。这个代码的主要目的是在特定的Java方法被调用时,我们能捕获并处理其中的参数。
在hook的方法实现中,我们使用console.log
来打印出这三个参数的值。这样,每当这个方法被调用时,我们就能在控制台看到这三个参数的值。
最后,我们将这个hook代码保存为一个文件,比如命名为"sign.js"。这样,当我们需要分析或修改这个方法的行为时,只需要修改这个文件即可。
在frida中,我们使用Java.use
来导入需要hook的类,并通过overload
来指定要hook的方法。在这个例子中,我们hook了一个名为key.b()
的方法,它对应于盐的h.b()
方法。同时,我们通过参数str, str2, str3
来获取所需的数据。
在开始hook之前,我们需要先获取到目标应用的包名。这通常可以通过查看AndroidManifest.xml文件中的package
字段来获取。在frida中,包名是用于识别和定位目标应用的重要信息。
接着,请确保已打开目标应用(否则,我们怎么进行hook呢?)。之后,执行以下命令:
```
```
解释一下这个命令的各个部分:
-U
选项会使frida自动查找并附着到当前启动的安卓模拟器或真实设备上。-l
选项后面跟上的是要执行的JavaScript脚本文件,即sign.js
。-n
选项后面则是目标应用的包名,也就是com.****.****
。
请注意,-p
选项可以用于指定进程号,与-n
选项共同作用以定位目标进程。在实际操作中,你可以根据需要选择使用哪个选项。
如果出现错误,请仔细检查你的命令和脚本,确保所有参数都已正确设置。
可以看到,盐已经出来了0.0。接下来,我们刷新一下应用,让相关接口执行一遍,看看结果如何:我们可以看到,str、str2、str3都已经成功获取,它们分别代表了发起的请求URL、null以及请求方式OK。
1.4 ◆ Python验证加密逻辑
现在,为了验证我们的操作是否正确,我们将用Python重新实现加密逻辑。
首先,我们需要导入必要的模块:hmac、base64和hashlib中的sha256。然后,定义请求URL(str1)、请求方式(str3)和换行符(str4)。注意,这里我们使用了占位符来代表实际的URL和密钥。
接下来,我们定义密钥(key)并将其编码为UTF-8字符串(appsecret)。同时,将请求方式(str3)编码为UTF-8字符串(data)。
最后,我们使用hmac模块和sha256哈希算法对数据进行加密,并使用base64进行编码,得到最终的签名(signature)。打印出这个签名,我们就可以验证我们的操作是否正确。
请注意,这只是一个示例,实际的密钥和URL可能会有所不同。在实际操作中,你需要替换占位符为实际的值。
猜你喜欢
- 2025-09-12 爬虫中的那些反爬虫措施以及解决方法
- 2025-09-12 如何防止Android应用代码被窃_android防止hook
- 2025-09-12 这些小工具让你的Android 开发更高效
- 2025-09-12 手机Python编程神器——AidLearning
- 2025-09-12 app开发领域中说的套壳产品指的是什么
- 2025-09-12 Android中的run-as命令带来的安全问题
- 2025-09-12 使用Android的adb命令停止APP后台进程的方法
- 2025-09-12 Android调试系列-使用android studio调试smali代码
- 2025-09-12 深圳嘉华学校安卓开发教程之完整性校验
- 2025-09-12 ADB工具实战宝典:解锁Android设备的隐藏力量,守护安全防线
你 发表评论:
欢迎- 09-12爬虫中的那些反爬虫措施以及解决方法
- 09-12如何防止Android应用代码被窃_android防止hook
- 09-12这些小工具让你的Android 开发更高效
- 09-12手机Python编程神器——AidLearning
- 09-12app开发领域中说的套壳产品指的是什么
- 09-12Android中的run-as命令带来的安全问题
- 09-12使用Android的adb命令停止APP后台进程的方法
- 09-12全面揭秘:如何破解加密参数及其验证方法
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)