安卓逆向

例题

1

拿到先放入exeinfor看一下,发现是一个zip文件,那么直接修改后缀名,解压得到apk文件

1721272211836-2854087c-1178-4c71-8ad2-9a422154f984.png

1721272280625-a6a99f17-eebe-4f12-a389-35ec64d820fd.png

然后放入jadx进行反编译

activity_main.xml通常是在Android应用程序的res/layout目录下。 如果您使用Android Studio进行开发,您可以在项目文件夹的app/src/main/res/layout/目录中找到它。 如果您无法找到它,您可以在Android Studio的项目窗口中展开app > src > main > res > layout目录来查看是否存在activity_main.xml文件。

1721271174826-6b58a770-db23-4c5e-885e-07aed9b3b769.png

然后可以找到Mainactivity

或者也可以直接搜索Main

1721271248315-c0f849c4-1245-4979-8cbc-cfabc551aca7.png

然后点进mainactivity,可以找到关键加密词

1721271850390-cb3cd3b4-8a07-4fe3-b671-53c4f0ec03ca.png

注意这里的key被改掉了,从123456789改成987654321

1721271882425-2d7cd9f4-e3ad-4cf3-9044-6987b2216768.png

跟进encode,然后逆向一下得到flag

1721271369384-fed8a416-d878-45c4-97dd-4cb57f8279a2.png

1
2
3
4
5
6
a='棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌'
flag=''
key=987654321
for i in range(len(a)):
flag+=chr((ord(a[i])^key)%128)
print(flag)

这里解释一下为什么要取余

这是因为ASCII字符集只有128个字符,所以如果不取模,那么异或运算的结果可能超出ASCII范围,导致无法正确解密。取模128可以保证结果在0到127之间,也就是ASCII字符集的有效范围。

如果不取余就会出现超出ASCII的范围

1721272017307-d9c771ea-ec6b-4a3e-8e34-06b130ae492a.png

2

1729348511465-bbe57147-2b2e-4c44-95b5-1fc582e1ae41.png

1729348544033-c0425354-1aa8-4297-91dd-0318a3b63126.png

在代码中,2 00 的来源是这一行:

1
2
3

Integer.valueOf((int) ItemTouchHelper.Callback.DEFAULT_DRAG_ANIMATION_DURATION)

点进入看一下这个值

1
2
3
4
5
6
a=[404, 220, 436, 368, 220, 436, 412, 452, 432, 200, 412]
b='ccadwjlyah'
for i in range(len(a)):
x=(a[i]>>2)^3
print(chr(x),end='')
mima='f4n_4ndro1d'

1729593547829-3cc63230-5557-496c-8c82-eac41ac54741.png

放到蓝叠模拟器运行一下

1729348655383-a3bf5ff7-0757-48c8-be83-13d39642876a.png

更新: 2024-10-22 18:40:23
原文: https://www.yuque.com/chaye-apqbl/vsc85q/fi66anigo3t9upnz


http://example.com/2026/01/19/RE/各种语言/安卓逆向/index/
Author
chaye
Posted on
January 19, 2026
Licensed under