beginners
simple changes using intel xmm instructions, these are docs
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_xor_si128&expand=6170
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_shuffle_epi8&expand=5153
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_add_epi32&expand=94
It is worthy to notice that the docs are operate on bits
1 | from z3 import * |
[rev]ANDROID
open the apk file with jadx, you can see the main algorithm. I’m sorry I can’t break out reverse algorithm, so I brute it.
1 |
|
.net
https://mrt4ntr4.github.io/GoogleCTF-dotNet/
使用了下面的库,在运行时会动态patch代码
https://github.com/pardeike/Harmony
dnspy在程序上右键->转到入口点可以直接找到入口点。
一步一步找到检测函数:输入长度是30,先把输入单个字符base64解码转成列表,
1 | public static List<uint> GRUNDTAL_NORRVIKEN(string LINNMON) |
然后判断每个字符都应该小于等于63。
执行按字节异或
1 | public class FARGRIK |
计算checksum
1 | internal static bool SMORBOLL(List<uint> IRMELIN) |
检测是否有重复
1 | internal static bool VAXMYRA(List<uint> LYCKSELE) |
最终检测
1 | internal static string HEROISK(List<uint> MATHOPEN) |