开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 11624|回复: 29
收起左侧

[技术专题] 算法助手使用教程

[复制链接]
结帖率:89% (8/9)
发表于 2021-7-23 13:17:20 | 显示全部楼层 |阅读模式   福建省厦门市
算法助手官方教程
前言
自从发布算法助手以来,收到了许多的反馈,其中有很多大佬的宝贵建议,也有很多小白的使用求助,因为平时也没有太多的时间,一一回复肯定是不现实的,所以写下此篇教程,希望能够对大家有所帮助。
这里也给没用过算法助手的兄弟们再介绍一下算法助手,文档尾部也会放下载地址!
算法助手是我们开发的一款运行在Android平台上基于Xposed的安卓调试工具,配合Xposed(需要Root),通过一系列Hook,反射操作,进行应用的安全测试,调试分析,代码定位,是一款不错的调试工具。

基础使用教程
步骤一:激活模块
1、由于该程序是个xposed模块,所以自然是需要先激活模块,本教程默认各位看官已有Xposed环境,将不进行xposed的安装讲解。
2、这边以Lsp框架为例子,启动算法助手模块,并在作用域中勾选你要Hook的App(经典Xposed只需要直接激活模块)
3、模块激活成功后,标题信息将显示“算法助手”,若未激活,则显示红字字体“模块未激活”
Tips:(部分机型和框架,可能会出现激活后显示未激活的情况,如果您确认已经激活,可试着直接使用)

步骤二:算法助手里打开开关
1、在算法助手中,在应用列表里,选择需要Hook的app,点进去以后,将总开关打开(不打开的话,所有的配置都不生效)
2、总开关打开以后,打开需要使用的相关功能的开关,例如"弹窗定位"
3、勾选完毕以后,运行被Hook的App
4、回到算法助手,切换到日志列表,一一点进去,可以看到详细的日志信息。
Tips:(安卓11的用户,被Hook的app需要开启存储权限,且没有开启存储重定向,才能正常写出日志)


步骤三:堆栈分析与代码定位堆栈的介绍
这个步骤,有开发经验的开发人员可以跳过,调用堆栈对于开发人员来说是再熟悉不过的了,毕竟你们敲了一整天的Bug,一跑起来全是这玩意儿对吧(手动滑稽)
在日志详细的尾部,可以看到调用堆栈,这个调用堆栈是干嘛用的?该怎么去理解他?
实际上,调用堆栈的结构是这样子的:类名.方法名(源文件名:行数)
那怎么看呢?从下往上看!!!
  1. 类1.方法1(类1.java:100)
  2. 类2.方法2(类2.java:55)
  3. 类3.方法3(类3.java:76)
复制代码

比如这个例子:
1、首先调用了类3的方法3
2、然后调用了类2的方法2
3、最后调用了类1的方法1
那么,我们已知,在类3的方法3里调用了方法2,可是,方法3的代码可能有非常多,我怎么知道它在哪里调用了方法2呢?
那么这时候行数的重要性就显示出来了,通过行数可以看到,在类3的76行,调用了方法2

堆栈实战分析
还是刚刚的例子,弹窗定位的日志信息,一般情况下,我们只需要看最后几行就可以了
  1. LspHooker_.makeText(Unknown Source:18)
  2. com.junge.test.MainActivity.onResume(MainActivity.java:24)
  3. android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1454)
  4. android.app.Activity.performResume(Activity.java:8050)
复制代码

最后2行,是android系统类,我们用不到,也不需要去看
从前2行看,我们可以看到,在MainActivity的onResume方法里调用了makeText,通过(MainActivity.java:24),可以看出MainActivity类的24行中调用了makeText
接下来我们反编译app,验证一下,我们在smali代码中找到MainActivity类搜索.line 24
使用Jadx查看java代码,也可以看到24行调用了makeText
Tips:目前MT管理器转为java代码是无法自动识别行号的
Tips:有许多app在编译后,会抹去源文件名,以及行数信息,所以堆栈分析只能当成辅助工具,不必过度依赖,学会怎么通过代码逻辑去分析代码才是重点


进阶使用教程:自定义Hook的使用
Hook,其实可以理解为拦截函数,拦截到函数以后,你想修改返回值,或者不让他执行,都可以
在算法助手选择app以后,在功能列表拉到最后,有个"添加自定义"按钮,点进去以后,进入到配置界面,然后进行hook配置

  1. package com.junge.test;

  2. import android.os.Bundle;
  3. import android.widget.Toast;
  4. import androidx.appcompat.app.AppCompatActivity;

  5. public class MainActivity extends AppCompatActivity {
  6.   public void onCreate(Bundle savedInstanceState) {
  7.       super.onCreate(savedInstanceState);
  8.       setContentView(R.layout.activity_main);
  9.   }
  10.    
  11.   public String test(String name) {
  12.       return "你好:" + name;
  13.   }

  14.   public void onResume() {
  15.       super.onResume();
  16.       Toast.makeText(this, test("张三"), 1).show();
  17.   }
  18. }
复制代码

还是以这个代码为例子,进入该Activity后,会调用test函数,并传入"张三",并弹出提示,而test函数,返回的是"你好+姓名",我想通过hook,去修改它的返回值,改为"hook返回值成功",怎么做?
配置如下:
java格式:
  1. 类名:com.junge.test.MainActivity
  2. 方法名:test
  3. 参数类型:java.lang.String
  4. 返回值:hook返回值成功
复制代码

smali格式:
  1. 类名:Lcom/junge/test/MainActivity
  2. 方法名:test
  3. 参数类型:Ljava/lang/String;
  4. 返回值:hook返回值成功
复制代码

Tips:使用smali格式的时候,参数类型务填写完整,包括分号。

结语
好了,教程到此结束,如果你也跟我一样,对技术有着浓厚的兴趣,我们可以一起交流学习。
同时欢迎大家提出宝贵的意见!
算法助手1.7版下载地址(回复可见):https://wwa.lanzoui.com/io9Qkrmhndc



评分

参与人数 4好评 +3 精币 +11 收起 理由
MrSimple + 2 感谢分享,很给力!~
夜的静night + 1 + 2 新技能已get√
无风不起浪 + 1 + 2 感谢分享,很给力!~
ノ朽默℡ + 1 + 5 那么好的东西,居然没人评分,唉……

查看全部评分


本帖被以下淘专辑推荐:

  • · 好帖|主题: 1229, 订阅: 43
结帖率:100% (11/11)

签到天数: 2 天

发表于 2023-1-29 01:46:44 | 显示全部楼层   江苏省南京市
我只能说牛逼,刚发现省事了太多
回复 支持 反对

使用道具 举报

结帖率:79% (55/70)

签到天数: 1 天

发表于 2022-10-21 23:27:03 | 显示全部楼层   广东省潮州市
这APP贼好,帮了我大忙,对于不懂逆算的。用了他。直接就弄到加密MD5顺序。真心感谢
回复 支持 反对

使用道具 举报

结帖率:95% (19/20)

签到天数: 21 天

发表于 2022-9-21 22:36:26 高大上手机用户 | 显示全部楼层   河南省商丘市
本帖最后由 ノ朽默℡ 于 2022-9-21 22:38 编辑

Screenshot_2022-09-21-22-23-24-401_bin.mt.plus.png
参数是Context这种类型的,添加自定义hook时参数类型怎么写呢?
Screenshot_2022-09-21-22-33-31-944_com.vmos.pro.png
我按照日志里面的输出,写com.zanyou.sya.MainApplication,不起作用-.- Screenshot_2022-09-21-22-35-42-707_com.vmos.pro.png
回复 支持 反对

使用道具 举报

结帖率:70% (28/40)
发表于 2022-3-9 14:45:07 | 显示全部楼层   贵州省黔东南苗族侗族自治州
6666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:70% (42/60)
发表于 2022-2-19 18:42:07 | 显示全部楼层   山东省滨州市
获取不到rc4加密解密
回复 支持 反对

使用道具 举报

结帖率:83% (10/12)
发表于 2022-2-18 10:04:17 | 显示全部楼层   四川省成都市
牛皮,不懂逆向的我,完美解决了!找到他提交文本的加密顺序,一个MD5直接过了
回复 支持 反对

使用道具 举报

发表于 2021-12-13 22:35:01 | 显示全部楼层   广西壮族自治区南宁市
夜深了YsL 发表于 2021-8-14 12:15
算法助手1.7版下载地址(回复可见)

111111
111111111111111
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 3 天

发表于 2021-11-27 01:18:10 | 显示全部楼层   湖南省长沙市
服务器连接失败
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2021-11-13 14:15:16 | 显示全部楼层   北京市北京市
夜深了YsL 发表于 2021-8-14 12:15
算法助手1.7版下载地址(回复可见)

希望大佬能分享一下新版助手
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2021-11-10 23:06:14 | 显示全部楼层   山西省运城市
服务器连接失败
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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