helloword
下载之后观察文件发现是apk文件是安卓程序的后缀,安卓逆向所以这道题要用安卓逆向的工具
在爱盘 - 最新的在线破解工具包 (52pojie.cn)下载好工具,解压后打开
打开jadx-1.4.7里面的bin文件夹找到jadx-gui.bat点击打开后打开下载好的apk文件(题目文件)
左边目录点击找到helloword然后一个一个点开可直接找到flag
SimpleRev
本题主要考察大端序和小端序以及大小写转换
join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
os.path.join(): 将多个路径组合后返回
拖入exe发现是64字节然后进入观察
观察之后直接点入Decry
可以看到这里的两个十六进制是大端序,但是数据在内存中都是小端序,所以要将其,反转一下。一般在CPU,x86都是小端序,但是IDA将之转换为了大端序
按R将src和v9转换化成字符串然后点进key3和key1得到key3是‘kills’;key1是’ADSFK‘
text是由key3和v9连接而成得killshadow
将key1赋值到key然后将src和key连接得到真正得key ADSFKNDCLS
再根据上面操作将key转换成小写字母得到adsfkndcls
最后在分析代码写出结果
#include<stdio.h>
int main()
{
int i,j,v3=10; //上面的大写换小写操作已经将v3加到10了
char key[11]="adsfkndcls";
char data[11]={"killshadow"};
char flag[11]={0};
for(i=0;i<10;i++)
{
for(j=65;j<123;++j)
{
if((j-39-key[v3%10]+97)%26+97==data[i])
{
printf("%c",j);
v3++;
break;
}
}
}
return 0;
}