某些app的逆向实战
x圈目标:逆向分析出其登录数据包中的各种字段抓包分析
发现了有一个加密字段codeSign
跑一下java层自吐算法脚本
Java.perform(function () { function showStacks() { console.log( Java.use("android.util.Log") .getStackTraceString( Java.use("java.lang.Throwable").$new() ) ); } function logOutPut(msg) { Java.use("android.util.Log").d("xiaojianbang", "frida inject: " + msg); } var By ...
frida脚本开发
学习目标:能够使用frida开发出简单的脚本,hook系统函数工具函数的封装Java.perform(function () { function showStack(){ var log = Java.use("android.util.Log"); var throwable = Java.use("java.lang.Throwable"); console.log(log.getStackTraceString(throwable.$new())); } var ByteString = Java.use("com.android.okhttp.okio.ByteString"); function toBase64(tag, data) { console.log(tag + " Base64: ", ByteString.of(data).base64()); } ...
frida相关API详解
学习目标:熟练使用frida对Java层代码进行hook静态方法和实例方法的hook
不需要管修饰符,不需要区分静态和实例方法,都是使用Java.use
Java.perform(function(){ var money = Java.use("com.xiaojianbang.hook.Money"); money.getInfo.implementation = function () { var result = this.getInfo(); console.log("money.getInfo result: ", result) return result; } money.setFlag.implementation = function (a) { console.log("money.setFlag param: ", a); return this.setFlag(a); ...
Java层关键代码快速定位
学习目标:能使用frida快速定位到关键代码函数调用栈的打印function showStacks(){ var Log = Java.use("android.util.Log"); var Throwable = Java.use("java.util.Throwable"); console.log(Log.getStackTraceString(Throwable.$new()))}
常用系统关键函数java.util.HashMapputJava.perform(function(){ function showStack(){ var log = Java.use("android.util.Log"); var throwable = Java.use("java.lang.Throwable"); console.log(log.getStackTraceString(throwa ...
app的简单防护
学习目标:了解一些app的防护措施,能对自己写的app做一些简单防护反编译一个app时搜索不到关键字
HTML5的App
字符串被加密了
反射调用相关类
动态加载dex
热修复
简单的字符串加密的实现dex的字符串加密可以用代码自动实现,需要使用到dexlib2这个库
若是不加任何防护,在登陆操作时,我们将密码发送给服务器,攻击者再抓包后直接反编译然后搜索password便可以定位到关键代码
package com.example.encrypt;import android.os.Build;import android.os.Bundle;import androidx.activity.EdgeToEdge;import androidx.appcompat.app.AppCompatActivity;import androidx.core.graphics.Insets;import androidx.core.view.ViewCompat;import androidx.core.view.WindowInsetsCompat;import java.security. ...
逆向分析dodonew
目标:得到”Encrypt”的算法逆向的步骤
抓包分析是否有需要逆向的字段
查壳分析是否有加固
查看界面元素,看是否是原生开发的app,以为不同形式app分析方法不一样
跑一下自吐算法插件
Hook常用系统函数来定位
找到一些疑似的函数,可以利用hook打印堆栈,来看是否调用了这些函数
关键加密代码的定位
人肉手工搜索字符串
可以搜索连接
可以搜索加密的函数
可以搜索同一个数据包中没有加密的参数名
使用查壳工具发现没有壳,抓包发现有一个加密字段:
"Encrypt": "NIszaqFPos1vd0pFqKlB42Np5itPxaNH\/\/FDsRnlBfgL4lcVxjXii\/UNcdXYMk0EQMz15fWd0AZ3\n9d4qc0ZgtMCbKF+l+FsXvqFFi4HhQ8Z56cxaZpXIUEhJ5R9IBRCtI97HMUH8l2PmJT4N+mA\/k2lT\nUTN+8LjHbtYGerEukUyVhjQHzeMCIEFbLVavcACyOG7MZVeYVISwA3hNO+DU7\/YXdymd3vpf ...
frida环境搭建
学习目标:配置好frida环境frida的安装pip install fridapip install frida-tools (安装frida-tools时,会自动安装frida)
判断frida是否安装成功cmd中执行frida --version, 能打印出版本号说明frida-tools没有问题cmd中执行python, 进入控制台import frida, 能导包成功,说明frida库没有问题
frida的卸载pip uninstall fridapip uninstall frida-tools
frida安装指定版本先安装指定版本的frida,再安装指定版本的frida-tools
pip install frida==14.2.18pip install frida-tools==9.2.5旧版的要下载.egg文件然后安装D:\Python38\python.exe -m easy_install frida-14.2.18-py3.8-win-amd64.egg
frida-tools版本的查看
https://github.com/frida/frida/r ...
Matlab快速入门
学习目标: 了解matlab基础操作赋值a = 1a = 2
注释% a = 1多行注释,快捷键Ctrl + R取消注释,快捷键Ctrl + T
清除工作区所有变量clear
清屏clc
输出和输入函数disp函数disp('你好世界')a = [1, 2, 3]disp(a)
input函数a = input('请输入考试分数')
判断语句a = input('请输入考试分数:')if a >= 85 disp("成绩合格")elseif a >= 60 disp("成绩合格")else disp("成绩挂科")end
字符串合并字符串% 方法一:stractstrcat('字符串1', '字符串2');% 方法二:[str1, str2, 、、、strn]或[str1 str2 、、、 strn]['字符串1', '字符串2'][' ...
密码学Java
学习目标:了解一些常见的密码学算法Hex编码什么是Hex编码Hex编码是一种用16个字符表示任意二进制数据的方法。它是一种编码,而非加密算法
java代码如下:
package org.example;import com.sun.org.apache.xerces.internal.impl.dv.util.HexBin;//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.public class Main { public static void main(String[] args) { String name = "许之少年凌云志, 曾许人间第一流"; byte[] bytes = name.getBytes( ...