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这个方法,我们可以换个逆向工具来看一下这个的具体代码
这 ...
Android逆向学习(三)vscode修改smali绕过vip
Android逆向学习(三)vscode修改smali绕过vip写在前面这是吾爱的第二个作业,主要就是要修改smali代码,其实smali代码我感觉没有必要去学,当然主要是我本来就会汇编语言,基本上汇编语言都是一样的,我是了解过mips,x86,jimple的,不管是mips还是smali还是x86的或者jimple,主要就是最寄存器的一些操作,格式也都差不多,简单学一下就可以上手
修改判断绕过vip还是老样子,我们直接逆向后找到第二个挑战
事实上这个挑战我感觉更加简单,所以大概率这篇博客看起来像是一个水文
1、任务目标
这一个挑战的目标就是实现投币的一键三连,但是三连的话需要有一个大会员判断,我们这一次的任务就是绕过这个大会员
2、代码分析我们直接使用之前的代码逆向软件,逆向后找到这个activity。然后看看这个代码的逻辑是怎么样子的
这时候可以直接使用smali2java这个插件查看反编译的java代码,但是缺点就是没法直接改java代码然后逆向回去,这里点名表扬一下dnspy这个软件,这是个专门对.NET进行逆向的一个软件,这个软件就可以直接修改代码后重新编译回去
然后查看代 ...
Android逆向学习(二)vscode进行双开与图标修改
Android逆向学习(二)vscode进行双开与图标修改写在前面这其实应该还是吾爱的第一个作业,但是写完上一个博客的时候已经比较晚了,如果继续敲机械键盘吵到室友,我怕我看不到明天的太阳,所以我决定分成两篇博客来进行学习
注意:我希望我的博客可以是不管是从那一篇开始看都可以学会,所以在我的每一篇博客中都会重复提到前面的很多内容,所以如果您感觉我的博客十分啰嗦请见谅
一、环境准备老样子,我使用的还是linux系统(ubuntu 22.04),vscode,以及xdroid,主要的插件都和上一次一样,这里就不再讲软件如何配置的,详细请见上一篇博客
二、实现双开1、什么是双开双开就是在一个android机器中同时安装和运行两个相同的软件,实现双开的方法有很多,这里我们就讲最简单的一个就是修改包名,让系统认为这是两个不同的软件,这个的实现方法也很简单,我们只需要修改相应文件下的包名就可以了
2、开始替换包名首先我们打开AndroidManifest.xml这个文件,这个文件了解过android开发的都知道,这里面就是这个apk应用的简单介绍,比如名字图标等,我们首先就要修改这个包名,包名在这个 ...
Android逆向学习(一)vscode进行android逆向修改并重新打包
Android逆向学习(一)vscode进行android逆向修改并重新打包写在前面其实我不知道这个文章能不能写下去,其实我已经开了很多坑但是都没填上,现在专利也发出去了,就开始填坑了,本坑的主要内容是关于android逆向,主要的教程来源来自52破解论坛的大佬课程,但是那是windows版,为喜欢用linux,所以这是一个有比较大改动的学习教程,不过我确信你在windows上也可以运行,let’s go.
一、软件准备如上文所说,我是linux用户,所以就是用的linux下相同的替代品(我感觉linux下的软件更好用)
1、模拟器我使用的模拟器叫做xdroid,为认为这个做得要比android studio的好(当然指分析起来的时候),因为很多软件用的native code是arm架构下的,而android studio下模拟器主要是x86架构,很多软件无法进行分析。当然如果安装xdroid需要关闭security boot,就是在bios里面关闭。
然后我们下载xdroid的安装包,直接./运行就好了,记得不要使用sudo ./ 会提示不可以。
我们还需要安装的软件有开发助手,NP ...