int
check()
{
signed
i;
// [rsp+Ch] [rbp-F4h]
v2[58];
// [rsp+10h] [rbp-F0h]
memcpy
(v2, &unk_100000ED0, 0xE0uLL);
for
( i = 0; i < 56; ++i )
if
( input[i] != v2[i] )
puts
((
const
char
*)err);
exit
(0);
}
return
(success);
__cdecl main(
argc,
**argv,
**envp)
v4;
// [rsp+40h] [rbp-70h]
__int64
v5;
// [rsp+A8h] [rbp-8h]
memset
(input, 0, 0x64uLL);
(&v4, 0, 0x64uLL);
scanf
(
"%s"
, &v4);
strlen
(&v4) != 56 )
//字符串长度
__strcpy_chk(input, &v4, 100LL);
//将输入的字符串copy到对应的字符串
func1(input);
//对输入的字符串进行了简单的异或操作
xfun1();
xfun2();
xfun3();
xfun4();
xfun5();
check();
( __stack_chk_guard != v5 )
__stack_chk_fail();
0;
__fastcall func1(
a1)
result;
// rax
// [rsp+0h] [rbp-Ch]
( i = 0; i < 57; ++i )
*(_BYTE *)(a1 + i) ^= 0xDEu;
//对字符串进行了简单的异或操作
result = (unsigned
)(i + 1);
ar *xfun2()
*result;
// [rsp+Ch] [rbp-4h]
result = &input[10];
//从第十个字符开始操作
( i = 0; i < 10; ++i )
input[i + 10] ^= 0xBEu;
result = (
*)(unsigned
*xfun3()
result = &input[20];
input[i + 20] ^= 0xEFu;
//从第20个字符开始操作
*xfun4()
result = &input[30];
input[i + 30] ^= 0xABu;
//从第30个字符开始操作
*xfun5()
result = &input[40];
( i = 0; i < 16; ++i )
input[i + 40] ^= 0xEFu;
//从第40个字符开始操作
[注意]看雪招聘,专注安全领域的专业人才平台!