太菜了 只会做两个简单题 不过还是从这个比赛学习到挺多东西
Ghidra使用啊 位运算啊 angr IR啊什么的 感谢出题人!
Hi!Harmony!
IDA7.6反编译失败 尝试使用Ghidra成功反编译
查找字符串交叉引用找到关键的加密函数
EXP:
#include <stdio.h>
const char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int main() {
char str[] = { 0x48 ,0x41 ,0x52 ,0x4d ,0x4f ,0x4e ,0x59,0x44 ,0x52 ,0x45 ,0x41 ,0x4d ,0x49 ,0x54 ,0x50 ,0x4f ,0x53 ,0x53 ,0x49 ,0x42 ,0x4c ,0x45,0x0};
for (int i = 0; i < 22; ++i) {
if (a[i] < 0x58) {
a[i] = a[i] + 3;
}
else {
a[i] = table[(a[i] -0x57) % 26-1]; //注意加密所使用的表是从uStack49开始的 exp所使用的表是从uStack48开始
}