程序存在大量混淆,可根据我们输入的交叉引用和函数返回值的交叉引用进行筛选
输入为base64编码
解编码后[-4:]为crc32校验值
分成2部分
每部分结构
a3、a4为分成的2个部分,交叉引用查找后续处理
校验每部分头部dw,(固定值,可通过求解逆元得到)
函数内通过 call check_ny_4CE450校验dw值
计算逆元
在xor_4E1620函数前后有混淆干扰,
xortable没必要获取,后面可通过校验结果反推。
xor data,通过dw值生成固定xor序列
校验data部分是否为固定值的逆元
可得到a,p,计算逆元可得b
第一部分
a
p
求得逆元b:
a2
p2
求得逆元b2:
但此时b经过前面xor处理,
只需再次构造输入后调试,便可得到正确的data
flag
.text:
0047D5F7
loc_47D5F7: ; CODE XREF: check_47B430
+
21A9
↑j
.text:
0047D5F7
lea ecx, [ebp
+
outsz]
.text:
0047D5FD
push ecx
.text:
0047D5FE
lea edx, [ebp
+
out]
.text:
0047D604
push edx
.text:
0047D605
mov eax, [ebp
+
myinput]
.text:
0047D608
push eax
.text:
0047D609
call b64decode_40A580
.text:
0047D5F7
loc_47D5F7: ; CODE XREF: check_47B430
+
21A9
↑j
.text:
0047D5F7
lea ecx, [ebp
+
outsz]
.text:
0047D5FD
push ecx
.text:
0047D5FE
lea edx, [ebp
+
out]
.text:
0047D604
push edx
.text:
0047D605
mov eax, [ebp
+
myinput]
.text:
0047D608
push eax
.text:
0047D609
call b64decode_40A580
.text:
00480406
loc_480406: ; CODE XREF: check_47B430
+
4FD2
↑j
.text:
00480406
mov edx, [ebp
+
outsz]
.text:
0048040C
push edx
.text:
0048040D
mov eax, [ebp
+
out]
.text:
00480413
push eax
.text:
00480414
call check_crc32_455F80
.text:
00480406
loc_480406: ; CODE XREF: check_47B430
+
4FD2
↑j
.text:
00480406
mov edx, [ebp
+
outsz]
.text:
0048040C
push edx
.text:
0048040D
mov eax, [ebp
+
out]
.text:
00480413
push eax
.text:
00480414
call check_crc32_455F80
struct
Part{
DWORD
dw;
DWORD
sz;
BYTE
data[sz];
}
base64({
Part1,Part2,Crc32
})
struct
Part{
DWORD
dw;
DWORD
sz;
BYTE
data[sz];
}
base64({
Part1,Part2,Crc32
})
.text:
00482CEF
loc_482CEF: ; CODE XREF: check_47B430
+
78BB
↑j
.text:
00482CEF
lea edx, [ebp
+
a4]
.text:
00482CF5
push edx ; a4
.text:
00482CF6
lea eax, [ebp
+
a3]
.text:
00482CFC
push eax ; a3
.text:
00482CFD
mov ecx, [ebp
+
outsz]
.text:
00482D03
sub ecx,
4
.text:
00482D06
push ecx ; a2
.text:
00482D07
mov edx, [ebp
+
out]
.text:
00482D0D
push edx ; a1
.text:
00482D0E
call parse_2part_458D90
.text:
00482CEF
loc_482CEF: ; CODE XREF: check_47B430
+
78BB
↑j
.text:
00482CEF
lea edx, [ebp
+
a4]
.text:
00482CF5
push edx ; a4
.text:
00482CF6
lea eax, [ebp
+
a3]
.text:
00482CFC
push eax ; a3
.text:
00482CFD
mov ecx, [ebp
+
outsz]
.text:
00482D03
sub ecx,
4
.text:
00482D06
push ecx ; a2
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课