【愚公系列】2023年08月 攻防世界-MOBILE(APK逆向)
【摘要】 @TOC 前言下面介绍两个反编译工具jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找索引功能强大jeb和IDA很像,属于动态调试,可以看java汇编也可以生成伪代码,还可以动态attach到目标调试对于so文件的逆向工具选择IDA逆向工具是一款反汇编器,被广泛应用于软件逆向工程领域,能够反汇编各种不同平台的二进制程序代码,并还原成可读的汇编代码。 一、APK逆向...
@TOC
前言
下面介绍两个反编译工具
- jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找索引功能强大
- jeb和IDA很像,属于动态调试,可以看java汇编也可以生成伪代码,还可以动态attach到目标调试
对于so文件的逆向工具选择
- IDA逆向工具是一款反汇编器,被广泛应用于软件逆向工程领域,能够反汇编各种不同平台的二进制程序代码,并还原成可读的汇编代码。
一、APK逆向
1.题目
2.答题
1、将apk拖进jadx工具反编译,可以看到两个关键参数
edit_userName=Tenshine
edit_sn = 0x7f0c0051;
进入checkSN
public boolean checkSN(String userName, String sn) {
if (userName == null) {
return false;
}
try {
if (userName.length() == 0 || sn == null || sn.length() != 22) {
return false;
}
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.reset();
digest.update(userName.getBytes());
String hexstr = toHexString(digest.digest(), "");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hexstr.length(); i += 2) {
sb.append(hexstr.charAt(i));
}
if (("flag{" + sb.toString() + "}").equalsIgnoreCase(sn)) {
return true;
}
return false;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return false;
}
}
进行md5加密,转成hex字符串,加上flag头后与输入密码进行比较
2、静态脚本获取
#coding:utf8
import hashlib
str1=b"Tenshine"
str2=hashlib.md5(str1).hexdigest()
print(str2)#b9c77224ff234f27ac6badf83b855c76
flag=""
for i in range(len(str2)):
if(i%2==0):
flag+=str2[i]
#flag="flag{"+flag+"}"
print(flag) #bc72f242a6af3857
3、动态获取结果
taskkill /f /im adb.exe # 先把模拟器自带的adb.exe杀死、去除环境变量
adb devices # 查看连接的设备,看是否连接成功
#查看运行的app包名,包含Activity
adb shell dumpsys window | findstr mCurrentFocus
# 以调试方式运行apk,包名: com.example.crackme/com.example.crackme.MainActivity
adb shell am start -D -n com.example.crackme/com.example.crackme.MainActivity
如果连接雷电模拟器失败,尝试进入雷电文件夹找到adb.exe的目录打开cmd运行
"./adb" connect 127.0.0.1:5555
# 指定设备去操作
adb -s emulator-5554 logcat
adb以调试方式打开应用,会出现这界面,说明成功,出现上面页面就可以在JEB3里面进入app的调试
断点
得到加密后的字符为string@4705:“bc72f242a6af3857”
则flag为bc72f242a6af3857
备注:JEB的常用快捷键:
- Q:跳转到对应代码
- ctrl+B:打断点
- Tab:进入或退出伪代码
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)