程序的流程:
IDA伪代码:
这里是程序的算法:
跟进去看看
这里看到base64必备的编码变换函数:
跟进去看看,找到字符表
OD定位,查看里面的存储数据,这里也能用IDA直接看,但是我还是习惯用OD来定位。
到这里,就可以参考网上的base64,来写出对应的解密算法
得出flag
程序解密完整源码如下:
int
__cdecl main()
{
v0;
// eax@3
_BYTE v2[3];
// [sp+11h] [bp-3Fh]@1
const
char
*v3;
// [sp+48h] [bp-8h]@3
*v4;
// [sp+4Ch] [bp-4h]@3
__main();
printf
(
"please enter Serial:"
);
scanf
" %s"
, v2);
if
strlen
(v2) > 0x31 )
puts
"error"
v4 = (
*)
calloc
(1u, 0x400u);
v0 =
(v2);
base64_encode(v2, v4, v0);
v3 =
"!NGV%,$h1f4S3%2P(hkQ94=="
;
( !
strcmp
, v4) )
"Success"
else
"Please Try Again"
free
(v4);
system
"pause"
return
0;
}
[注意]看雪招聘,专注安全领域的专业人才平台!