安卓逆向
web安全工具库
这个作者很懒,什么都没留下…
展开
-
安卓逆向 -- Frida Hook某车_sign算法分析
五、查看运行结果,和抓的包一致,只是结果是小写,包里面是大写。所以sign就是上面一大堆参数进行拼接,然后再进行md5运算,最后再转为大写。二、用jadx打开,全局搜索"_sign",发现sign值都来自于toSign函数。四、经过分析最后结果来自encodeMD5函数,我们hook该函数。安卓逆向 -- FridaHook某车udid的加密值。安卓逆向 -- FridaHook分析3DES加密值。安卓逆向 -- Frida环境搭建(HOOK实例)安卓逆向 -- SO文件逆向分析。原创 2023-06-08 21:49:06 · 596 阅读 · 0 评论 -
安卓逆向 -- SO文件逆向分析
八、Jin学习中,我们知道so里面的函数,第一个参数是JNIEnv类型,所以我们修改一下,右击第一个参数类型,选择Convert to struct,选择JNIEnv。七、点击fiel,选择load file,选择Parse C header file,导入Jni.h文件,帮助我们解析。三、将so文件拖入ida进行分析,当输出框出现finished,说明已经加载完毕。二、解压apk文件,去lib文件里找到libnative-lib.so文件。五、进入后,可以按空格键,切换视图,这里可以很清楚看到key。原创 2023-06-07 16:33:59 · 2094 阅读 · 0 评论 -
安卓逆向 -- FridaHook分析3DES加密值
一、上节课分析到一个encode3Des函数,看到CBC模式,首先要找iv和key的值。六、分析so有点难度,所以直接hook getDesKey函数,获取key。四、getdesk又来自于getSigndeskey,继续进入该函数查看。二、通过上下文,直接可以看到iv的值,常量:appapich。三、通过下面代码,我们进入getDeskey函数,查看key。五、继续进入get3desKey函数查看,来自于原生函数。安卓逆向 -- FridaHook某车udid的加密值。1、安装需要的库文件。原创 2023-06-06 16:24:16 · 550 阅读 · 1 评论 -
安卓逆向 -- FridaHook某车udid的加密值
4、 System.nanoTime(),这个是手机从开始到现在的运行时间,随机一个13位的数字即可。2、HiAnalyticsConstant.REPORT_VAL_SEPARATOR是一个常量。一、全局搜索udid,通过分析,来自getUDID这个函数,双击进入该函数。5、getDeviceId(),可能模拟器的原因,我这里显示的是空。3、getIMEI(context),一般一个随机的15位数即可。1、通过encode3Des函数,判断该加密是3DES加密。二、分析getUDID函数。原创 2023-06-04 21:56:47 · 519 阅读 · 0 评论 -
安卓逆向 -- Frida环境搭建(HOOK实例)
打开jadx,把apk拖拽进去,全局搜索"pwd",挨个分析,明显来自于这条代码,后面是md5,可以判断pwd加密是md5,我们hook该地方。6、将下载好对应的frida版本解压,随便起个好记的名字,然后push到安卓模拟器。10、hook代码编写,直接右击要hook的函数,然后复制为frida片段。2、adb环境配置,将安卓模拟器安装目录里的adb,添加到环境变量。3、运行adb shell,进入模拟器内,说明adb环境没问题。11、运行结果,hook到了明文及加密后的结果。三、Frida环境搭建。原创 2023-06-03 23:15:39 · 1783 阅读 · 2 评论 -
2023安卓逆向 -- JNI学习(从开发到反编译)
4、通过编程的时候我们知道,jni函数一般第一个参数都是JNIEnv类型,所以,我们按键盘y,快捷修改。2、修改一下Cmake文件,具体内容下,就是告诉该项目,我要生成一个叫做CFun的so文件。3、回到刚新建的C文件,电机一下Sync Now同步一下,就不会飘红报错了。5、把鼠标放到Cstrfun函数上面,按Alt+回车,去C文件里实现该函数。3、解压该app,将CFun.so拖进ida中双击进入,我们要分析的函数。二、创建好项目,直接点击运行,出现下面界面,说明我们的环境都没有问题。原创 2023-06-02 16:51:46 · 1111 阅读 · 0 评论 -
2023安卓逆向 -- 某合伙apk登录加密分析
11、按着ctrl键,点击上面a.b,进入到下面代码,代表一个&符号,requestBody请求体,初步判断sb.toString就是。12 、通过数据包发现token是空,reqTime是时间戳,noncestr是132456,最终就是将这些值进行md5处理。7、分析上面的代码,可以看到有个setPwd函数,这个就是加密函数,继续查看谁调用了该函数,进入一个md5的加密代码。一、分析登录的数据包,加密的数值是登录的密码,看着想md5加密,请求头中,x-sign也是加密的,看着也像md5。原创 2023-05-31 15:11:06 · 1546 阅读 · 0 评论 -
安卓SO层开发 -- 编译指定平台的SO文件
1、打开项目的build.gradle文件,默认是四种平台都生成的,如果只要两种种,就只留下两个。2、里面是运行在不同平台的SO文件,SO文件内容不一样,但运行效果是一样。3、选择Build-Build Bundle--Build APK。4、点击右下角的locate,直接跳转到生成apk的路径。1、一个apk中的lib文件夹里面可能有四个子文件夹。2、修改完后,记得同步一下。原创 2022-10-30 17:35:30 · 815 阅读 · 0 评论 -
安卓SO层开发 -- 第一个NDK项目
2、填写项目名称、项目位置等相关信息。3、选择C++版本信息,默认即可。1、选择Native C++1、编译后生成的so文件名称。2、声明的so层的函数。3、在Java层调用。4、在C层的代码实现。原创 2022-10-29 15:27:59 · 885 阅读 · 0 评论 -
安卓逆向 -- 实战某峰窝APP(动态分析)
往期文章安卓逆向 -- 实战某峰窝APP(静态分析)安卓逆向 -- IDA动态调试一、启动调试环境1、启动android-server./as2、转发端口adbforward tcp:23946 tcp:23946二、启动IDA,加载要调试的SO文件三、在上节课分析的关键处下断,然后查看相关参数四、运行起来,触发断点,查看参数1、setkey:asfsaADDJF55b262d99cff7cac7459e8&2、update:..原创 2021-10-31 09:26:12 · 496 阅读 · 0 评论 -
安卓逆向 -- 实战某峰窝APP(静态分析)
一、通过抓包进行对比分析,需要找的参数的是"oauth_signature",感觉像是Base64编码二、JEB载入该APP搜索关键词三、按tab键,切换成java代码,有个关键加密函数“cryptoParams”四、双击进入该函数,该函数又调用了一个原生函数“xAuthencode”五、往上翻,发现该函数来自名为"mfs"的SO文件六、将该SO拖进IDA继续分析七、打开导出函数选项卡,发现有xAuthencode函数八、双击进入该函数,并通过F5编译原创 2021-10-30 08:31:29 · 275 阅读 · 0 评论 -
安卓逆向 -- 绕过SO层签名验证
往期文章安卓逆向 -- NDK开发实现MD5算法安卓逆向 -- 调用其他APK的SO文件安卓逆向 -- IDA基本用法安卓逆向 -- IDA动态调试安卓逆向 -- 实现SO层签名验证SO层加验证就可以防止别人了么?俗话说防君子不防小人,这次我们来做一次“小人”。。。。一、按上节课内容将SO文件导入,会提示验证错误,二、分析SO文件1、继续查看signatureparams函数内容2、函数最前面加了一段验证,双击byte_2c223查看字符串内容原创 2021-10-26 19:26:34 · 1293 阅读 · 0 评论 -
安卓逆向 -- 实现SO层签名验证
往期文章安卓逆向 -- NDK开发实现MD5算法安卓逆向 -- 调用其他APK的SO文件源码获取方式:公众号回复202110240、前言上节课我们演示了,如何调用别人的SO文件,从而达到某些效果,这节课我们给SO层加上验证,如果其他apk调用就会报错1、java层声明校验签名函数public static native void signatureversify(Context ctx);2、java层获取包名PackageInfo packageInfo=nul原创 2021-10-25 10:42:56 · 1358 阅读 · 0 评论 -
安卓逆向 -- IDA动态调试
一、前言上节课已经分析出了关键函数,这里只要在关键函数下断,然后,动态调试就可以获取想要获取的数据二、IDA动态调试步骤1、将IDA目录dbgsrv文件夹下的android_server复制到真机adbpush ....as /data/local/tmp2、执行android_serveradb shell进入手机操作模式cd /data/local/tmp进入到as所在的位置chmod 777 as给as可执行权限./as执行3、转发端口adbfor...原创 2021-10-21 08:43:33 · 1434 阅读 · 0 评论 -
安卓逆向 -- IDA基本用法
一、分析apk的java层代码,发现调用了“wtf”这个so文件package com.sichuanol.cbgc.util;public class SignManager { static { System.loadLibrary("wtf"); } public static native String getSign(String arg0, String arg1, String arg2) { }}二、找到apk的libwtf.so文件,拖进I原创 2021-10-18 10:13:19 · 1228 阅读 · 0 评论 -
安卓逆向 -- 调用其他APK的SO文件
往期文章安卓逆向 -- NDK开发(简单项目)安卓逆向 -- NDK开发实现MD5算法前提:反编译apk只有调用代码,没有实现代码一、新建一个空项目二、调用其他apk的so文件1、新建一个package,就是我要调用其他apk的包名2、新建一个类文件,名字和调用so的类的名字一样package com.bucuo.ndk20211010;public class SignatureUtils { public static nativ原创 2021-10-16 08:35:13 · 862 阅读 · 0 评论 -
安卓逆向 -- NDK开发实现MD5算法
源码下载地址:关注微信公众号回复:20211014一、正常SO层校验框架1、新建一个NativeC++项目2、新建一个SignatureUtils类,里面写一个原生方法 package com.bucuo.ndk20211010;public class SignatureUtils { public static native String signatureparams(String param);}3、在报错处按alt+enter,自动添加nativ原创 2021-10-15 08:31:18 · 372 阅读 · 0 评论 -
安卓逆向 -- 自吐算法(DES)
一、DES算法源码DESKeySpec deskey = new DESKeySpec("123456789".getBytes(StandardCharsets.UTF_8));//将密钥实例化SecretKeyFactory key = SecretKeyFactory.getInstance("DES");//加密算法SecretKey secretKey = key.generateSecret(deskey);//处理成系统可识别的密钥Cipher cipher = Cipher.getIn原创 2021-09-29 11:44:02 · 701 阅读 · 0 评论 -
安卓逆向 -- 自吐算法(MAC)
一、MAC算法源码import javax.crypto.Macimport javax.crypto.spec.SecretKeySpecString bs= "逆向有你a";SecretKeySpec key = new SecretKeySpec("12345".getBytes(StandardCharsets.UTF_8), "HmacSHA256");//申请一个密钥,长度内容随便写Mac mac = Mac.getInstance("HmacSHA256");//告诉系统我用的加密码方式原创 2021-09-28 09:35:49 · 424 阅读 · 0 评论 -
安卓逆向 -- 自吐算法(MD5和SHA)
一、主要框架,hook代码主要填写在try代码块里package com.bucuo.a20210908;import android.app.Application;import android.content.Context;import android.util.Log;import de.robv.android.xposed.IXposedHookLoadPackage;import de.robv.android.xposed.XposedBridge;import de.robv.and原创 2021-09-28 09:28:48 · 985 阅读 · 0 评论 -
安卓逆向 -- Hook多个dex文件
往期文章Xposed模块 -- Hook函数参数一、主要代码package com.bucuo.a20210908;import android.app.Application;import android.content.Context;import android.util.Log;import de.robv.android.xposed.IXposedHookLoadPackage;import de.robv.android.xposed.XposedBridge;import de原创 2021-09-20 14:47:09 · 487 阅读 · 0 评论 -
Xposed模块 -- Hook函数参数
安卓系统7.1搭建Xposed环境安卓逆向 -- Xposed模块编写安卓逆向 -- Jeb动态调试一、根据以前的课程,我们通过抓包分析,知道了如下的关键函数package com.dodonew.online.http;import android.text.TextUtils;import android.util.Log;import com.dodonew.online.util.DesSecurity;。。。。。。。。。。。。。。。。。。//省略导包public class原创 2021-09-16 18:50:31 · 1244 阅读 · 0 评论 -
Xposed模块 -- Hook函数参数
之乎者也吧#安卓逆向#Xposed模块#hook函数参数视频号 安卓系统7.1搭建Xposed环境安卓逆向 -- Xposed模块编写安卓逆向 -- Jeb动态调试一、根据以前的课程,我们通过抓包分析,知道了如下的关键函数package com.dodonew.online.http;import android.text.TextUtils;import android.util.Log;import com.dodonew.online.util.De...原创 2021-09-13 14:39:54 · 570 阅读 · 0 评论 -
安卓逆向 -- Xposed模块编写
一、新建一个无界面项目二、下载xposedBridgeAPI模块https://github.com/924587628/XposedBridgeAPI三、将下载的api拖进libs文件夹四、右击jar包,选择add as library五、修改xml文件<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:labe原创 2021-09-11 13:48:08 · 866 阅读 · 0 评论 -
安卓系统7.1搭建Xposed环境
前言:直接安装模拟器提供的xposed模块会报如下错误:一、下载系统版本对应的sdkhttps://dl-xda.xposed.info/framework/二、将下面代码保存为script.sh文件############################################################################################ Xposed framework installer zip.## This script.原创 2021-09-11 13:46:25 · 1478 阅读 · 0 评论 -
某影视APP算法逆向分析
一、抓取数据包1、请求头有%加十六进制,说以是url编码,先解密一下GET http://m.mapps.m1905.cn/User/sendVer?request=jYgPer7AuEqdM+DYqs/AbNb35UrMvjLwt4+f0p3RHXc= HTTP/1.12、需要找的数值是requests的组成、pid(常量值)、key、did(设备编号)GET http://m.mapps.m1905.cn/User/sendVer?request=jYgPer7AuEqdM原创 2021-09-10 14:47:55 · 815 阅读 · 0 评论 -
某圈app算法分析
特别声明:最近网络安全类公众号可能随时失联,为防止失联,希望大家有时间加一下微信号:ivu123ivu,或者关注公众号小号:逆向有你 一、抓包分析,经过多次对比,发现nonce和codeSign是会一直变的,access_token会随着device变化而变化nonce=13d71ff8f23c431b9e298775adf626b5&codeSign=92C5C2C1F8217528EB1C0BF6D6BCC4D5×tamp=1630298971591&d..原创 2021-09-08 21:51:19 · 466 阅读 · 0 评论 -
某江app算法分析
一、抓包分析1、数据包GET http://m.api.zt.jsw.com.cn/v2/member?password=a123456&clientid=1&device_id=010067028741939&ip=1.1.1.1&system_name=android&sign=e96e177e2b9ed89680ac754916333527&siteid=10001&time=1630198142862&type=androi原创 2021-09-04 17:17:28 · 384 阅读 · 0 评论 -
某合伙人app算法分析
一、抓一下登录的数据包POST http://www.100hhr.com/App/Login/login HTTP/1.1Content-Type: application/x-www-form-urlencodedContent-Length: 120Host: www.100hhr.comConnection: Keep-AliveAccept-Encoding: gzipUser-Agent: okhttp/3.9.1data=%7B%22password%22%3A%221979118011原创 2021-09-04 17:16:18 · 237 阅读 · 0 评论 -
安卓逆向 -- 算法基础(数字签名)
一、数字签名数字签名的基础是公钥和私钥的非对称加密,发送者使用私钥加密消息摘要(签名),接收者使用公钥解密消息摘要以验证签名是否是某个人的。常见的有MD5withRSA,SHA256withRSA二、Java版public static String pubkey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDkluCxbqyIIVEG6wq3xwOncwtO" +"Ew45xvjOdEuxBG5MCGIGfik7s2XB3Znz2ih7RWkQdOT原创 2021-08-30 21:36:23 · 724 阅读 · 0 评论 -
安卓逆向 -- 算法基础(RSA)
一、非对称加密算法1、对称加密算法中,加密和解密用到的密钥是一样的,而非对称加密算法,加密和解密的密钥是不一样的。非对称加密算法有公钥和私钥,公钥加密私钥解密。加密处理安全,但是性能极差,单次加密长度有限制。2、填充方式:pkcs1padding,明文最大字节数为密钥字节数-11密文与密钥等长;NoPadding,明文最大字节数为密钥字节数,密文与密钥等长。二、密钥对生成密钥不是随便给的,需要特殊算法生成,可以在线生成:http://web.chacuo.net/netrsakeypair原创 2021-08-30 21:34:24 · 930 阅读 · 0 评论 -
安卓逆向 -- 算法基础(DES与3DES)
一、DES算法1、DES是一个分组加密算法,它以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。DES是一个包含16个阶段的“替换–置换”的分组加密算法,64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。2、DES算法密钥是8个字节,无论你给多长的密钥他只取前8个字节。3、3DES算法密钥是24个字节,是DES的3倍二、常用加密模式1、ECB(key)简单理解为:明文123456789,先分成三组123 456 789,.原创 2021-08-25 12:05:17 · 724 阅读 · 0 评论 -
安卓逆向 -- 算法基础(MAC)
一、MAC算法MAC算法是含有密钥的散列算法,兼容MD和SHA算法,在此基础上添加了密钥支持,因此也被称为Hmac算法,定义在RFC 2014中,分为两大分支MD和SHA分支:MD分支:Hmac-MD2、Hmac-MD4、Hmac-MD5;SHA分支:Hmac-SHA1、Hmac-SHA256、Hmac-SHA384、Hmac-SHA512、Hmac-SHA224等;二、代码实现,以HmacSHA256为例1、Java版String bs= "逆向有你a";SecretKe原创 2021-08-21 15:04:28 · 338 阅读 · 0 评论 -
安卓逆向 -- 算法基础(SHA)
一、SHA算法SHA由美国标准与技术研究所(NIST)设计并于1993年发表,该版本称为SHA-0,由于很快被发现存在安全隐患,1995年发布了SHA-1。2002年,NIST分别发布了SHA-256、SHA-384、SHA-512,这些算法统称SHA-2。2008年又新增了SHA-224。由于SHA-1已经不太安全,目前SHA-2各版本已成为主流。二、常用的SHA-256算法1、SHA-256:32个字节、64个字符、256个bit2、使用方式和MD5方法一样,只是传入算法名不一样原创 2021-08-16 15:44:31 · 517 阅读 · 0 评论 -
安卓逆向 -- 算法基础(MD5)
一、单向散列函数(消息摘要算法)1、不管明文多长,散列后的密文定长2、明文不一样,散列后结果一定不一样3、散列后的密文不可逆4、一般用于校验数据完整性、签名 sign5、由于密文不可逆,所以后台无法还原,也就是说他要验证,会在后台以跟前台一样的方式去重新签名一遍。也就是说他会把源数据和签名后的值一起提交到后台。所以我们要保证在签名时候的数据和提交上去的源数据一致。这种算法特喜欢在内部加入时间戳,很多粗心的学员,通常会在签名的时候取一次时间戳,然后在提交源数据的时候,又取一次时间戳,导致后原创 2021-08-15 17:11:01 · 374 阅读 · 0 评论 -
安卓逆向 -- 算法基础(Base64与HEX)
一、Base641、所有的数据都能被编码为只用65个字符就能表示的文本。标准的Base64每行为76个字符,每行末尾添加一个回车换行符(\r\n)。不论每行是否满76个字符,都要添加一个回车换行符。2、65字符:A~Z a~z 0~9 + / =URL Base64算法中,为了安全,会把 + 替换成 - ,把 / 替换成 _= 有时候用 ~ 或 . 代替3、Base64的应用密钥、密文、图片、数据简单加密或者预处理4、正常的Base64编码与解码packag...原创 2021-08-13 10:50:19 · 498 阅读 · 0 评论 -
安卓逆向 -- POST数据解密
上节课内容安卓逆向 -- JEB3.7安装使用安卓逆向 -- Jeb动态调试一、通过上几节课我们知道要找的加密数据如下{"Encrypt":"NIszaqFPos1vd0pFqKlB42Np5itPxaNH\/\/FDsRnlBfgL4lcVxjXii4KhogG\/C4u8yj2BCWdrDBlE\nm\/tlCFbgkTeVrEwGYpBtmuwEYeSFr7zfAr\/2Gtv7Sw4Wz9u3unWuTw34VLT\/1mbgDILNi9D8Ajku\nTRKnYuVNl7sIN原创 2021-08-11 09:37:59 · 1219 阅读 · 0 评论 -
安卓逆向 -- Jeb动态调试
之乎者也吧#安卓逆向#JEB动态调试#为中国点赞视频号 上节课内容安卓逆向 -- JEB3.7安装使用一、抓登录包数据{"Encrypt":"NIszaqFPos1vd0pFqKlB42Np5itPxaNH\/\/FDsRnlBfgL4lcVxjXii4KhogG\/C4u8yj2BCWdrDBlE\nm\/tlCFbgkTeVrEwGYpBtmuwEYeSFr7zfAr\/2Gtv7Sw4Wz9u3unWuTw34VLT\/1mbgDILNi9D8Ajku\nT...原创 2021-08-09 17:05:53 · 516 阅读 · 0 评论 -
安卓逆向 -- JEB3.7安装使用
JEB一款强大的安卓逆向分析工具,动态调试smali代码非常方便一、解压缩下载的原包,将里面的压缩包继续解压二、将jeb-demo../bin/app/文件里的jeb文件,替换一下三、将Keygen.class文件复制到Keygen_GUI里面四、打开终端,运行javaKeygen,获取密钥五、进入jeb_demo..文件夹,给最高权限(windows系统可以省略这一步)chmod 777jeb_linux.sh六、运行./jeb_linux.sh(windo..原创 2021-08-05 18:28:16 · 3678 阅读 · 0 评论 -
安卓逆向 -- 常用命令与分区目录
1、adb devices:查看设备2、adb shell:进入手机的控制台adb.exe: more than one device/emulator:连接多个设备,需要指定那个设备adb -s emulator-5554 shell:指定要连接的设备3、df:查看设备分区情况4、cd /:进入根目录ls:显示文件列表,-a参数包括隐藏文件,以"."开头的文件cd /data/lcoal/tmp:逆向中常用目录5、文件权限“-rw-rw-rw-”第.原创 2021-08-04 19:03:19 · 408 阅读 · 0 评论
分享