某气骑士 libtprt.so 反 Frida 机制分析与绕过
某气骑士 libtprt.so 反 Frida 机制分析与绕过好久没写博客了,今天打算更新一下,记录一下之前写过的东西,在GitHub上也写了一些小软件,顺便分享一下
本文核心问题:libtprt.so 是通过哪些特征检测 Frida?
方法:对比 frida-server 与 florida-server 差异
一、工具准备最近写了一些小工具,感觉还是挺好用的,所以分享出来:
EasyHookhttps://github.com/RytterMohn/EasyHook
EasyHook 是一个运行在 Windows 桌面端的 Android Frida 脚本 IDE,支持脚本管理、代码编辑、Android 设备 连接、进程选择、Attach/Spawn 注入、运行控制和日志输出,让 Frida 脚本无需手写 Python 启动器即可快速执行。
UsbDetectionBypasshttps://github.com/RytterMohn/UsbDetectionBypass
隐藏 Android 应用内 USB 连接与 USB 调试检测信号的 LSPosed/Xposed 模块。
E ...
Android逆向学习(十一) IDA动态调试Android so文件
Android逆向学习(十一) IDA动态调试Android so文件一、 写在前面这是吾爱破解论坛正己大大的第12个教程,并且发现一个神奇的事情,正己大大的教程竟然没有第11个,感觉很奇怪
写这个博客的主要原因是希望提供一种新的解法,并且记录自己android逆向学习的过程,所以本博客会有很多实际操作的方法,喜欢的话可以点个免费的赞
我的操作系统还是用的linux,windows也可以,流程也基本是一样的
二、课程目标了解so加载流程,IDA开启动态调试,SO的防护手段。
三、课程内容1. android中so文件的加载直接看源代码:https://android.googlesource.com/platform/libcore/+/15d8280/luni/src/main/java/java/lang/System.java
可以简单了解调用so文件的流程:
Java 层 → System.loadLibrary → Runtime → VM ClassLoader → linker(android_dlopen_ext) → mmap so → 解析 ELF → JNI_O ...
最新版某气骑士分析记录-绕过某讯的防御dump内存并解密存档
最新版某气骑士分析记录-绕过某讯的防御dump内存并解密存档前段时间想找一个能简单打发时间的小游戏,于是就想到了元气骑士,但是元气骑士的旧账号在另一个手机上,那个手机不在身边,但是我又不想重头开始玩,作为网安学生,于是有了自己逆向的想法。
逆向分析首先逆向一下元气骑士的apk包,一眼看到这是一个unity开发的游戏,然后同时看到的还有libijiami的so文件,说明这是一个使用爱加密的壳,这个il2cpp也必要逆向了,必然是加了密的:
如果想要拿到未加密的libil2cpp,一个可行的方法就是去内存找,因为代码加载的时候,必然是从内存中加载出去的:
通过万能的github,我找到可以扒内存的apk,并且还能自动fix ELF:
然后通过这个方法可以扒出来libil2cpp.so,but,等俺使用il2cpp dump的时候,发现解析不出来
完蛋,发现global-metadata.dat是加密的,所以需要用点其他手段,想办法解出来,使用frida对应用先attach一下看看:
MD,炸了,说明有frida检测,还能怎么办,接着搞呗,先看看加载了哪些so库:
因为我用的frid ...
Android逆向学习(十) IDA逆向编辑Android so文件
Android逆向学习(十) IDA逆向编辑Android so文件一、 写在前面这是吾爱破解论坛正己大大的第10个教程
native code在我之前的博客中讲到过,所以这里就不讲了
简单来说,native code就是在android中使用c++或c语言进行开发
这样的话会给逆向带来一定的难度,所以本博客就是介绍如何解决这个问题
使用到的工具有:
vscode
IDA pro 9.0
二、 任务目标打开挑战7,可以看到这次的任务是要打开这个大门,但是我们是不知道密钥的,所以可以明确我们的任务就是想办法获得这个密钥。
三、 实现方法首先分析第七关的代码:
可以发现调用了lib中so文件,然后我测试用的手机是红米k30su,架构是arm64,所以就选择arm64-v8a文件夹下面的so文件
之后通过ida打开这个文件,查找名称为check的函数
大概就可以判断出check是进行判断的函数,只要对这个进行修改就可以了:
然后观察代码的样子,(这是我做完题目后又回过头写博客的,所以跟原版有点不一样,就是v7=strcmp(v6,v5) == 0可能本来是1来着)
我的第一个想法就是 ...
Android逆向学习(九) Xposed快速上手(下)
Android逆向学习(九) Xposed快速上手(下)一、写在前面这是吾爱破解正己大大教程的第九个作业,然后我的系统还是ubuntu,android测试机器用的是已经root的Redmi K30su。
上个博客介绍了xposed的配置方法和简单举例,本博客主要讲解关于xposed的其他用法。
二、任务目标实现学习使用xposed常用API,并上手尝试,查看效果,了解xposed基本功能
本次博客量大管饱
三、实现方法Xposed常用API这些hook的实例来自于正己大大给出的apk中的com.zj.wuaipojie.Demo文件,可以通过APKLab逆向得到具体信息,APKLab的使用方法可以自行google或者看我的第一篇博客。
APKlab解码之后的代码是:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283packa ...
Android逆向学习(八)Xposed快速上手(上)
Android逆向学习(八)Xposed快速上手(上)前言xposed是一个用来hook的工具,简而言之,通过替换/system/bin/app_process程序控制zygote进程,这样的话,app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程以及创建的Dalvik虚拟机的劫持。
看起来有点烧脑是不是,没关系,会用就行!
之前的博客中我们讲解了frida这个框架(个人比较喜欢用这个来分析),但是一个问题是frida框架需要通过电脑端进行控制,也就是我们需要在电脑端运行python程序,然后通过这个程序进行hook。
如果说我们想要长久的使用一个hook程序,也就是不使用电脑也能hook,frida是很难实现的,但是xposed可以实现,只需要编写好插件,xposed就能根据这个插件长久的执行hook操作,不需要再使用电脑连接。
不过xposed现在已经不再支持最新的系统,所以本章节在手机端主要用到的是Lsposed框架。
原理首先讲解一下xposed原理,这就要涉及到android的基本的原理。
Dalvik 是 Andr ...
Android逆向学习(七)绕过root检测与smali修改学习
Android逆向学习(七)绕过root检测与smali修改学习一、写在前面这是吾爱破解正己大大教程的第五个作业,然后我的系统还是ubuntu, 这个是剩下作业的完成步骤。
二、任务目标现在我们已经解决了一些问题,现在剩下的问题有
hash校验需要解决
关于root检测的
关于与smali学习的
1.解决hash校验的问题老样子,我们先查看hash校验的代码,看一下这个代码的逻辑
直接把java代码给粘贴过来
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859public final boolean check_Hash(Context context) { String apkPath = getApkPath((Context) this); FileInputStream fileInputStream = null; try { ...
Android逆向学习(六)绕过app签名校验(上)
Android逆向学习(六)绕过app签名校验(上)一、写在前面这是吾爱破解正己大大教程的第五个作业,然后我的系统还是ubuntu,建议先看一下上一个博客,关于动态调试的,因为我这才发现动态调试是真的有很大用处,然后我们开始今天的教程(拖更很久了,刚保研完就被老师拉着开始做项目,抽空出一期博客,这一节博客问题其实挺多的,如果有不对的地方请指出,不胜感激)
二、任务目标
破解签名,使程序可以正常运行
三、实现方法1. 破解签名防止闪退我们先简单看一下这个反编译之后的java文件
这里有个check,以及system终结的一个代码
解决方法具体有两种,一种简单的方法就是直接更改函数的返回值,让他只返回true
我们分析一下checkSign的代码
最主要就是修改这个地方,把false改成true
我们发现areEqual调用后有一个分支,就说明改变这个分支就可以了
我们直接修改smali代码后就是这样的
然后我们就可以看到这个页面是什么样子的了
然后还有一种方式就是我们动态调试一下,然后我们直接改变这个hash值
就是这个hash值,这个就是这个软件原来的hash,因为我们对 ...
Android逆向学习(五)app进行动态调试
Android逆向学习(五)app进行动态调试一、写在前面非常抱歉鸽了那么久,前一段时间一直在忙研究生保送的事情,现在终于结束了,可以继续更新android逆向系列的,这个系列我会尽力做下去,然后如果可以的话我看看能不能开其他的系列,当然这就要看我以后忙不忙了,废话少说我们开始今天的学习,动态调试
对了,关于之前smali2java插件的bug,已经和开发者联系后修复了这个bug,感谢开发者大大的重视
二、任务目标进行动态调试,获得对应的密钥
三、动态调试我们进行动态调试的话首先要添加上这个权限
添加上这个权限后我们才可以进行动态的调试
然后进行打包后得到apk,之后将apk移动到jeb中去(直接拖动就可以)
先开启开发者模式,就是对着版本号点击10下,就可以开启开发者模式了
之后使用adb进行调试
因为在上一期中我是改名成为了东北往事,所以命令是这样的
adb shell am start -D -n com.zj.dongbeiwangshi/.ui.MainActivity
但是!这样运行是有问题的,我改了好久才发现这个问题,就是通过adb启动的话是会连接失败的,所以我选 ...
Android逆向学习(四)app修改smali函数跳过弹窗广告,等待广告,更新提醒
Android逆向学习(四)app修改smali函数跳过弹窗广告,等待广告,更新提醒一、写在前面这是吾爱破解课程的第三个练习,我在写这篇博客时遇到了vscode插件bug,已经想办法联系原作者了,希望能够尽快更新修复这个问题,废话少说let’s go
二、任务目标打开后会出现一个带有时间的广告弹窗和一大堆弹出广告,我们的任务就是去掉这些东西
三、去除等待广告我们首先打开开发助手的activity查看,看看这个activity是怎么一个调用的
我们可以发现这个调用的逻辑是这样MainActivity -> AdActivity -> AlertDialog
我们就按这个查,先查AdActivity
然后我竟然发现了smali2java的bug,绝了,这个bug的修复放在了番外篇,会进行一个简单介绍和bug修复的方法
然后我们分析这个代码的结构,最神奇的地方来了,这个jadx开源软件也有一个问题
这里有一个代码没有被翻译成java,当然这一段我们光看smali代码也能看出来这个是用lambda表达式调用了jump这个方法,我们可以换个逆向工具来看一下这个的具体代码
这 ...

