第一步,先查壳,发现没壳,64bit,丢进ida64中然后我们直接进入main函数分析
做一些简单的分析,在旁边写注释,这边补充一个小知识点,在反编译出来的c代码中,十六进制数转换出来的字符串要倒序,当作一个知识点记住就好了,所以这边的 v7需要反序,最后上代码
#include<stdio.h>
#include<string.h>
int main(){
char v8[]=":\"AL_RT^L*.?+6/46";
char v7[]="harambe"; //这个字符串需要倒序!
int a=strlen(v8);
char s[a];
for(int i=0;i<strlen(v8);i++){
s[i]=v7[i%7]^v8[i];
printf("%c",s[i]);
}
return 0;
}
运行一下,flag就出来了,最后总结一下,记住一个知识点,在c代码中,由十六进制数转换而来的字符串需要倒序!