__int64 __fastcall sub_1400435F0(__int64 pInputbuffer,
int
a2, FILETIME
*
a3, _DWORD
*
a4, FILETIME
*
a5, _DWORD
*
a6)
{
__int64 nKeyLen;
/
/
rbx
char
*
v10;
/
/
rax
__int64 v11;
/
/
rcx
int
nIndex;
/
/
er10
char
*
pOut;
/
/
r8
unsigned
int
i;
/
/
er9
BYTE v15;
/
/
dl
unsigned __int8 v16;
/
/
cl
__int64 result;
/
/
rax
int
pOutBuffer[
124
];
/
/
[rsp
+
20h
] [rbp
-
358h
] BYREF
DWORD aKey[
8
];
/
/
[rsp
+
210h
] [rbp
-
168h
] BYREF
char v20[
80
];
/
/
[rsp
+
230h
] [rbp
-
148h
] BYREF
DWORD v21;
/
/
[rsp
+
280h
] [rbp
-
F8h]
int
v22;
/
/
[rsp
+
284h
] [rbp
-
F4h]
DWORD v23;
/
/
[rsp
+
288h
] [rbp
-
F0h]
int
v24;
/
/
[rsp
+
28Ch
] [rbp
-
ECh]
nKeyLen
=
-
1i64
;
if
( a2 !
=
0x100
|| !pInputbuffer )
/
/
对输入的参数进行验证
return
0xFFFFFFFFi64
;
/
/
接下来这一段 Memset
0
一块
0x80
的空间
v10
=
v20;
v11
=
2i64
;
do
{
*
(_QWORD
*
)v10
=
0i64
;
*
((_QWORD
*
)v10
+
1
)
=
0i64
;
*
((_QWORD
*
)v10
+
2
)
=
0i64
;
v10
+
=
0x40
;
*
((_QWORD
*
)v10
-
5
)
=
0i64
;
*
((_QWORD
*
)v10
-
4
)
=
0i64
;
*
((_QWORD
*
)v10
-
3
)
=
0i64
;
*
((_QWORD
*
)v10
-
2
)
=
0i64
;
*
((_QWORD
*
)v10
-
1
)
=
0i64
;
-
-
v11;
}
while
( v11 );
/
/
1
)第一次解密
/
/
对读进来的
0x200
大小的
buffer
进行第一次解密运算 得到
0x80
大小的buffer1,并且放到上面的初始化的空间中
*
(_DWORD
*
)v10
=
0
;
nIndex
=
0
;
pOut
=
v20;
for
( i
=
1
; i <
0x101
; i
+
=
2
)
{
v15
=
*
(_BYTE
*
)((unsigned
int
)(
2
*
nIndex)
+
pInputbuffer);
if
( (unsigned __int8)(v15
-
'0'
) >
9u
)
{
if
( (unsigned __int8)(v15
-
'A'
) <
=
5u
)
v15
-
=
0x37
;
}
else
{
v15
-
=
'0'
;
}
if
( v15 >
0xFu
)
break
;
v16
=
*
(_BYTE
*
)(i
+
pInputbuffer);
*
pOut
=
16
*
v15;
if
( (unsigned __int8)(v16
-
'0'
) >
9u
)
{
if
( (unsigned __int8)(v16
-
'A'
) <
=
5u
)
v16
-
=
55
;
}
else
{
v16
-
=
'0'
;
}
if
( v16 >
0xFu
)
break
;
*
pOut |
=
v16;
+
+
nIndex;
+
+
pOut;
}
if
( nIndex !
=
128
)
return
0xFFFFFFFFi64
;
/
/
2
)AES解密
/
/
初始化AES解密的KEY
strcpy((char
*
)aKey,
"ShouJiErShiSiShi"
);
BYTE1(aKey[
4
])
=
0
;
HIWORD(aKey[
4
])
=
0
;
sub_140043040();
/
/
计算Key的长度
do
+
+
nKeyLen;
while
(
*
((_BYTE
*
)aKey
+
nKeyLen) );
/
/
AES ECB 模式解密
sub_140042B70((DWORD
*
)pOutBuffer, aKey, nKeyLen);
sub_1400411E0((unsigned
int
*
)pOutBuffer, (__int64)v20, (__int64)v20,
0x80u
);
result
=
0i64
;
/
/
获取授权时间
a3
-
>dwLowDateTime
=
v21;
*
a4
=
v22;
a5
-
>dwLowDateTime
=
v23;
*
a6
=
v24;
return
result;
}