[初级教程]算法助手简单教程

算法助手是我们开发的一款运行在Android平台上基于Xposed的安卓调试工具,配合Xposed(需要Root或者沙盒环境),通过一系列反射操作,进行应用的安全测试,调试分析,代码定位,是一款不错的调试工具。开发者:军哥(757456456@qq.com),教程:正己,感谢两位大佬的付出。

功能介绍

1、Md5,Sha等信息摘要算法(MessageDigest类)2、AES、DES,RSA等秘钥算法(Cipher类)3、Hmac等含有秘钥的哈希算法(Mac类)4、对话框的定位(Dialog类)5、Log捕获(LOG类)7、拦截程序退出(System以及其他类)8、justTrustMe升级版(可高效自动定位混淆后的okhttp)9、文件访问记录(File类)10、自定义Hook,可自行定义hook类,可设置返回值,可拦截执行11、webViewDebug(使webView可调试)12、shell命令行纪录13、……后续会不断进行增加

教程

简单教学
本教程是针对一些小白用户,大佬可绕道。

一、勾选目标应用
打开应用后,要先选择你要hook的目标应用,可借助右上角的搜索快速定位,如果要hook系统应用则需左滑,勾选显示系统应用

图片[1]-[初级教程]算法助手简单教程
图片[2]-[初级教程]算法助手简单教程
图片[3]-[初级教程]算法助手简单教程

二、打开目标应用
1.正如开关界面所说,目标一样必须开启储存权限,如果软件没有权限的话,要自己在AndroidManifest.xml添加一下权限代码,后续版本会免去这个步骤。(另外Lsp框架的用户也需要在作用域里勾选上要hook的应用。)这一步很关键,如果没有开启是无法获取到日志的!!!
PS:开了存储重定向的话,被hook的app,和算法助手,都需要关掉存储重定向!!!

<!-- 修改或删除您的USB存储设备中的内容 -->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
图片[4]-[初级教程]算法助手简单教程

三、查看结果
打开软件触发你要分析的功能(如果是要分析协议就打开aes、des、md5的开关,如果是要定位弹窗就开对话框显示,这里有个小bug,下个版本会修复,总之想要干嘛就开对应的开关),接着回到算法助手点击日志进行查看,这里我们触发了一个aes的算法,可以很明显的看到key和iv以及原本的内容,在最下面还有堆栈调用。

图片[5]-[初级教程]算法助手简单教程
图片[6]-[初级教程]算法助手简单教程

进阶应用
1.以上只是列举了其中一个功能,其他的功能都是大同小异,下面来讲讲自定义Hook这个功能。这个其实跟learnhook、mhook的操作是一样,鉴于一部分人可能没用过,我这里就简单的说一下,因为暂时没啥案例,我就直接照着一段代码讲,思路明白了就可以了。
代码如下:

.class public Lcom/bean/VipInfo;        //类名,这个一般在类中的最顶端
.super Ljava/lang/Object;
.source "SourceFile"

# instance fields
.field public end_date:Ljava/lang/String;
.method public isVip()Z           isvip是方法名,后面的()里可能会有参数,例如:I,Ljava/lang/String; 有就填没有就不填。Z是返回值的类型,算法助手自动判断无需填写
    .registers 4


    iget-object v0, p0, Lcom/bean/VipInfo;->end_date:Ljava/lang/String;

    invoke-static {v0}, Lcom/utils/StringUtils;->isEmpty(Ljava/lang/String;)Z

    move-result v0

    return v0
.end method

2.假设你已经定位到这个关键方法,只要赋值1就可以破解了,那么碰巧这个软件有签名校验,而你又搞不定,这种时候就需要xposed的hook功能了。
3.复制方法中的几个关键字:Lcom/bean/VipInfo; 和isVip4.回到算法助手,点击你要hook的软件,打开自定义hook,依次填写(下个版本会兼容java和smali两种格式)

图片[7]-[初级教程]算法助手简单教程

5.最后点击下方的添加就完成了一个自定义的hook
6.另外下方还有两个勾选框,拦截执行:顾名思义就是不让某个方法执行,这个我很少用到,如果有什么骚操作,欢迎补充。
7.另一个则是构造函数,这里介绍一下构造函数的意思:就是函数名与类名相同,无返回值,分有有参和无参构造函数。其中的参数就是hook区别的关键。

下载地址

© 版权声明
THE END
喜欢就支持以下吧
点赞0赞赏
分享
抢沙发

请登录后发表评论