内容纲要

Android逆向

安装工具

apktool

apktool.bat(复制到文本存为.bat)

apktool.jar

将apktool.bat和apktool.jar放到同一个路径下,并添加到系统环境变量中。

反编译APK:

命令行代码:
apktool d -s -o

命令行介绍:
d :执行decode,表示被反编译的apk文件的绝对路径。
-s:指定不反编译源码,即保留classes.dex文件。
-o :指定反编译之后生成文件的路径。

image-20210424212546322

image-20210425004900111

dex2jar

dex2jar

dex2jar命令:
d2j-dex2jar.bat

image-20210425004913011

image-20210425004940985

jd-gui

jd-gui

拖进去或打开

image-20210425005056986

动态调试

安装adb

成功检查到设备会如图

image-20210719004304027

将ida下的dbgsvr文件的android_server通过shell命令转存到Android

adb push android_server64 /data/local/tmp
#修改权限
#adb shell x:在shell下执行x命令
adb shell chmod 777 /data/local/tmp/android_server64

image-20210719005530255

进入shell

#root
su

image-20210719004352848

#执行
./android_server64
#转发端口,第一个是电脑端口,第二个是安卓端口
#在新的cmd下执行
adb forward tcp:23946 tcp:23946

image-20210719004458865

image-20210719004705884

https://www.jianshu.com/p/a1c51ce599b7

https://zhuanlan.zhihu.com/p/145383282

image-20210719011511375

错误

illegal segment bitness:64位运行了32位

端口占用:reboot命令重启,或关闭进程

例题

来自oj的爬楼梯

apktool+dex2jar+jd得到

image-20210425011509275

用apktool box反编译apk(网上都有,别人的网盘我就不放资源链接了)

image-20210425011151059

打开反编译后的文件夹,删除整个unknown文件夹(好像和之后生成apk之后的签名有关)

smali之于java就如同汇编之于C语言,因此我们只需要修改smali就可以修改app

找到MainActivity.smali,即为MainActivity函数的smali(从jd里可以看到com.ctf.test.ctf_100,大概能得出位置)

记事本打开

image-20210425011735989

image-20210425012017542

image-20210425012132644

image-20210425012119331

v3的点击为true而值为1

所以将v5的0x0改为0x1

保存

把整个文件夹拖入apktool box,回编译apk

image-20210425012531899

apk用模拟器打开

然后按键就能点了

image-20210425012959621