androidso_ez
参考文章:https://www.cnblogs.com/sK07XdAy/p/18203747
静态分析
1、当有时候代码很长的时候,想自己猜猜加密含义时,可喂给chatgpt一试
2、Rot13,以前也经常见,可就是没有仔细看看,虽然很简单,但可以了解了解偏移量,喂给Cyberchef会更省事些
Rot13,顾名思义一般情况下偏移13,如下
//ch为大写字母
ch=(ch-'A'+13)%26+'A'
//ch为小写字母
ch=(ch='a'+13)%26+'a'
当代码块中的13改为16,即为偏移16,对于偏移13:chrot13(rot13(ch))而对于偏移16:chrot16(rot10(ch))
3、re真是一半靠蒙一半靠猜啊,猜测jiejie函数为Rc4加密,猜测Rc4加密后以此异或0x03,0x89,0x33,0xB8,0x54,0x0C,0x20,0x6A
4、对于源代码,其中有key算法为AES,加密却是DES的矛盾,查阅资料后有以下分析:
public SecretKeySpec(byte[] key, String algorithm)
从给定的字节数组构造一个密钥。此构造函数不检查给定的字节是否确实指定了指定算法的密钥。例如,如果算法是DES,则此构造函数不检查key是否为8字节长,并且也不检查弱键或半弱键。
这句话从参考文章中偷的,也没看太懂
就虽然SecretKeySpec key = new SecretKeySpec(str2, "AES");但由于SecretKeySpec()函数原因,加密Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");依旧按照DES加密。
动态分析
asm_re
参考文章:https://blog.csdn.net/Myon5/article/details/139046502
1、处理ida跑出来的汇编代码时,如果给了下图的信息,从图中可以获取的主要信息
Processor : ARM //ARM架构
Byte sex : Little endian //小端序
CODE64 //64位文件
2、如果给了机械码,我们可以把文本文件喂给gpt,输出机械码
之后到010editor中新建十六进制文件,ctrl+shift+v复制进去,之后按照给定的格式用ida打开
反编译即可