SEH

在python中,你是否见过以下语法:

1
2
3
4
5
6
7
8
9
for r in range(1, len(factors) + 1):
for subset in combinations(factors, r):
possible_key = reduce(lambda x, y: x*y, subset)
try:#防止key的长度不对
aes = AES.new(long_to_bytes(possible_key), AES.MODE_CBC, iv)
flag = aes.decrypt(enc_flag)
print('Found possible flag:', flag)
except:
continue

1
2
try
except

它的作用是尝试执行try块中的内容,如果出现异常,就执行except的内容。

在Windows中,也有类似的保护程序正常执行的机制,叫做SEH(Structured Exception Handling)

通过在源代码使用__try,__except,__finally来实现

使用时,except()中的值用来表示异常处理方法

1
2
3
4
__except()括号中表达式的取值范围:
1:处理异常
0:不处理异常交给下一个异常节点去处理
-1:继续执行(程序直接寄掉)

在程序中,可能故意使用SEH,刻意引发错误跳过执行一些指令


施工中