Android逆向分析AliCrackMe

静态分析反调试so,IDA动态调试so

本文尝试分析crackme程序

0、准备工作

电脑:   Window10

手机:   AndroidPhone Redmi note 4x Version7.0 Root

环境:   Java 1.8.0_121

调试:   IDA V6.8

0.1 将apk软件安装到手机上

可通过adb命令安装,命令:adb install AliCrackMe.apk

0.2 发送android_server到手机

通过adb push android_server data/local/tmp将IDA/dbgsrv目录下的android_server发送到手机的tmp目录

0.3 在手机目录中改名android_server为as并赋予777权限

adb shell

su

cd data/local/tmp

mv android_server as

chmod 777 as

0.4 关闭seLinux防火墙

setenforce 0

0.5 运行android_server

./as

1、调试

1.1 TCP转发

adb forward tcp:23946 tcp:23946

1.2 启动MainActivity

adb shell am start -D -n com.yaotong.crackme/.MainActivity

1.3 打开DDMS

双击monitor.bat,com.yaotong.crackme前边出现红色小虫子,记下com.yaotong.crackme的端口号86XX

1.4 打开IDA(32bit)

点OK,点go

Debugger-->Attach-->Remote ARMLiunx/Android debugger,选择hostname为127.0.0.1,port:23946,点击OK

附加进程,search"crack",双击com.yaotong.crackme,等待几秒。

勾选三项:

suspend on process entry point

supend on thread start/exit

supend on library load/unload

按F9运行

1.4 在cmd窗口通过jdb连接

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=86XX

出现设置未捕获的java.lang.Throwable等

1.5 IDA

点击cancel,按两次F9,加载完libcrackme.so,选中module中的crackme.so,选择java_com_yaotong_crackemeXXXX.securityCheck,在函数第一行下断点。

按F4,让程序直接退出,有反调试。

1.6 关闭运行的as

ctrl+c

2、过反调试

直接拉libcrackme.so进IDA,找到libcrackme.so的BLX R7处,按下F2,改为00 00 00 00,按下F2保存,在菜单栏,点击Edit->Patch program->Apply patches to input file...,选择保存位置,点击OK。

3、将保存的libcrackme.so放到手机中替换原来的so文件

3.1 删除手机原有libcrackme.so

adb shell

su

cd /data/app/com.yaotong.crackme-1/lib/arm

rm -rf libcrackme.so

3.2 传送新libcrackme.so到目标文件夹

adb push libcrackme.so /data/app/com.yaotong.crackme-1/lib/arm

在上一个cmd中赋予so文件的执行权限:chmod 777 libcrackme.so

4、动态调试

4.1 cmd1

./as

4.2 cmd2

adb forward tcp:23946 tcp:23946

adb shell am start -D -n com.yaotong.crackme/.MainActivity

4.3 DDMS

4.4 IDA

attach 127.0.0.1 23946

搜索并双击com.yaotong.crackme

附加三项

F9

4.5 JDB

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=86XX

4.6 IDA

点击cancel,按两次F9,加载完libcrackme.so,选中module中的libcrackme.so,选择java_com_yaotong_crackemeXXXX.securityCheck,在函数第一行下断点。

按F4,F9,在程序进入输入框处输入111,点击输入密码,断在断点处,在Hex View-1窗口中同步R0,一顿F8,当Hex View-1窗口出现111,就同步R3,继续F8,在Hex View-1中得到flag:aiyou,bucuoo

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值