1234下一页
返回列表 发新帖

<算法助手>官方教程

  [复制链接]

1

主题

60

帖子

251

积分

初中生

Rank: 3Rank: 3

金币
91
好评
12
贡献
0
发表于 2021-7-23 12:37:11 | 显示全部楼层 | 阅读模式
本帖最后由 757456456 于 2021-7-23 15:11 编辑

算法助手官方教程前言
自从发布算法助手以来,收到了许多的反馈,其中有很多大佬的宝贵建议,也有很多小白的使用求助,因为平时也没有太多的时间,一一回复肯定是不现实的,所以写下此篇教程,希望能够对大家有所帮助。
这里也给没用过算法助手的兄弟们再介绍一下算法助手,文档尾部也会放下载地址!
算法助手是我们开发的一款运行在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)</font>
复制代码

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

堆栈实战分析
还是刚刚的例子,弹窗定位的日志信息,一般情况下,我们只需要看最后几行就可以了
  1. LspHooker_.makeText(Unknown Source:18)
复制代码

最后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. }</font>
复制代码

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

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

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



结语
好了,教程到此结束,如果你也跟我一样,对技术有着浓厚的兴趣,我们可以一起交流学习。
如果在软件过程中,遇到什么问题可以进入官方交流群进行探讨
同时欢迎大家提出宝贵的意见!
QQ:757456456
QQ交流群:1064330788
算法助手1.7版下载地址:https://wwa.lanzoui.com/io9Qkrmhndc




已有11人评分好评 金币 理由
mt584 + 1 + 1 很给力!
XuanRan + 2 + 5 优秀创作奖励
914324398 + 1 + 1
黎幽梦月 + 1 + 1 很给力!
cnplis + 1 + 1 很给力!
lbb + 1 + 1
maojingxin + 1 很给力!
yuanyxh + 1 + 1
南山楠 + 1 + 1 很给力!
柒晨 + 1
正己 + 1 + 1 军哥yyds

查看全部评分 总评分:好评 +11  金币 +14 

回复

使用道具 举报

27

主题

2375

帖子

5519

积分

硕士生

Rank: 6Rank: 6

金币
810
好评
2
贡献
0

MT论坛最佳新人考神MT论坛帅哥MT论坛新人

发表于 2021-7-23 12:45:19 来自手机  | 显示全部楼层
前排刘明
回复

使用道具 举报

0

主题

3221

帖子

5934

积分

硕士生

Rank: 6Rank: 6

金币
1771
好评
0
贡献
0
发表于 2021-7-23 12:45:36 | 显示全部楼层
支持一个
回复

使用道具 举报

1

主题

189

帖子

867

积分

高中生

Rank: 4

金币
55
好评
0
贡献
1

考神

发表于 2021-7-23 12:45:58 来自手机  | 显示全部楼层
回复

使用道具 举报

1

主题

121

帖子

466

积分

初中生

Rank: 3Rank: 3

金币
108
好评
1
贡献
0
QQ
发表于 2021-7-23 12:46:09 来自手机  | 显示全部楼层
军哥66666
回复

使用道具 举报

60

主题

2413

帖子

8779

积分

硕士生

萌新

Rank: 6Rank: 6

金币
1511
好评
111
贡献
12

考神MT论坛帅哥MT论坛最佳新人MT论坛活跃会员

QQ
发表于 2021-7-23 12:47:10 来自手机  | 显示全部楼层
军哥yyds
回复

使用道具 举报

8

主题

995

帖子

3408

积分

大学生

Rank: 5Rank: 5

金币
1455
好评
5
贡献
0
发表于 2021-7-23 12:47:22 来自手机  | 显示全部楼层
火钳刘明
回复

使用道具 举报

3

主题

390

帖子

1164

积分

高中生

Rank: 4

金币
286
好评
0
贡献
0
发表于 2021-7-23 12:47:27 来自手机  | 显示全部楼层
无敌
回复

使用道具 举报

0

主题

125

帖子

402

积分

初中生

Rank: 3Rank: 3

金币
113
好评
0
贡献
0
发表于 2021-7-23 12:47:30 来自手机  | 显示全部楼层
感谢分享
回复

使用道具 举报

118

主题

6320

帖子

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1019
好评
96
贡献
1

MT论坛最佳新人考神MT论坛活跃会员MT论坛侠客MT论坛新人

QQ
发表于 2021-7-23 12:48:15 来自手机  | 显示全部楼层
自定义hook可以加个hook成功的提示吗?好判断。
回复

使用道具 举报

48

主题

1464

帖子

4911

积分

大学生

Rank: 5Rank: 5

金币
811
好评
13
贡献
0

考神MT论坛帅哥

发表于 2021-7-23 12:49:16 来自手机  | 显示全部楼层
来了看看
回复

使用道具 举报

1

主题

24

帖子

84

积分

小学生

Rank: 2

金币
26
好评
0
贡献
0
发表于 2021-7-23 12:49:50 来自手机  | 显示全部楼层
必须顶起
回复

使用道具 举报

91

主题

3043

帖子

7469

积分

硕士生

学了一年多还是初学者

Rank: 6Rank: 6

金币
2023
好评
7
贡献
0
发表于 2021-7-23 12:50:10 来自手机  | 显示全部楼层
感谢分享
回复

使用道具 举报

118

主题

6320

帖子

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1019
好评
96
贡献
1

MT论坛最佳新人考神MT论坛活跃会员MT论坛侠客MT论坛新人

QQ
发表于 2021-7-23 12:50:11 来自手机  | 显示全部楼层
为什么我不是安卓11hook部分应用看不到日志啊,其他应用可以正常输出日志,也不是存储权限的问题。而且功能型的hook比如防止退出,生效了。但是日志看不到。
回复

使用道具 举报

0

主题

360

帖子

1327

积分

高中生

Rank: 4

金币
467
好评
0
贡献
0
发表于 2021-7-23 12:56:11 来自手机  | 显示全部楼层
支持支持
回复

使用道具 举报

发表回复

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

本版积分规则

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