babyunic(z3解法)
func文件,Ghidra反mips,z3一把梭
一个优秀的z3脚本
import z3
import ctypes
import re
'''
#IDAPython
import binascii
start = 0x202020
tmp = []
for i in range(42):
tmp.append(binascii.hexlify(get_bytes(start,4)))
start += 4
print tmp
'''
tmp = ['ffffff94', 'ffffff38', '00000126', 'ffffff28', 'fffffc10', '00000294', 'fffffc9e', '000006ea', '000000dc', '00000006', 'ffffff0c', 'fffffdf6', 'fffffa82', 'fffffcd0', '00000182', '000003de', '0000014e', '000002b2', 'fffff8d8', '00000174', 'fffffaa6', 'fffff9d4', '000001c2', 'fffff97c', '0000035a', '00000146', 'ffffff3c', 'fffffa14', '000001ce', '000007dc', 'fffffd48', '00000098', '0000085e', 'fffffdb0', 'ffffffbc', '0000036e', 'ffffff4e', 'fffff836', '000005c0', '000006ae', '00000694', '00000022']
piParm2 = list(map(lambda x:z3.IntVal(ctypes.c_int32(int(x,16)).value),tmp))
#由于tmp中的数据是有符号整型,Python想要正常使用需要使用ctypes.c_int32转换类型
#为了将 Z3 中的数和 Python 区分开,应该使用 IntVal()、RealVal() 和 RatVal() 分别返回 Z3 整数、实数和有理数值。
a = '''
*piParm2 = ((((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2]) -
(uint)pbParm1[3]) + (uint)pbParm1[4]) - (uint)pbParm1[5])
- (uint)pbParm1[6]) - (uint)pbParm1[7]) - (uint)pbParm1[8]) +
(uint)pbParm1[9] + (uint)pbParm1[10]) - (uint)pbParm1[0xb]) +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) +
(uint)pbParm1[0x15] + (uint)pbParm1[0x16] + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) + (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) + (uint)pbParm1[0x1c] + (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) + (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) + (uint)pbParm1[0x22] + (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26]) -
(uint)pbParm1[0x27]) + (uint)pbParm1[0x28] + (uint)pbParm1[0x29];
piParm2[1] = (((((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) +
(uint)pbParm1[2]) - (uint)pbParm1[3]) -
(uint)pbParm1[4]) + (uint)pbParm1[5]) -
(uint)pbParm1[6]) - (uint)pbParm1[7]) - (uint)pbParm1[8])
- (uint)pbParm1[9]) + (uint)pbParm1[10]) -
(uint)pbParm1[0xb]) + (uint)pbParm1[0xc]) - (uint)pbParm1[0xd]
) - (uint)pbParm1[0xe]) + (uint)pbParm1[0xf]) -
(uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) + (uint)pbParm1[0x12])
- (uint)pbParm1[0x13]) + (uint)pbParm1[0x14] + (uint)pbParm1[0x15]) -
(uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) - (uint)pbParm1[0x18]) +
(uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) + (uint)pbParm1[0x1b]) -
(uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) + (uint)pbParm1[0x1e] +
(uint)pbParm1[0x1f] + (uint)pbParm1[0x20] + (uint)pbParm1[0x21] +
(uint)pbParm1[0x22] + (uint)pbParm1[0x23]) - (uint)pbParm1[0x24]) -
(uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) - (uint)pbParm1[0x27]) -
(uint)pbParm1[0x28]) + (uint)pbParm1[0x29];
piParm2[2] = ((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2] +
(uint)pbParm1[3]) - (uint)pbParm1[4]) + (uint)pbParm1[5])
- (uint)pbParm1[6]) - (uint)pbParm1[7]) + (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) - (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11] +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13] + (uint)pbParm1[0x14] +
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19] + (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) + (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) +
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) + (uint)pbParm1[0x20] +
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) +
(uint)pbParm1[0x24] + (uint)pbParm1[0x25] + (uint)pbParm1[0x26]) -
(uint)pbParm1[0x27]) + (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[3] = ((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) - (uint)pbParm1[2])
- (uint)pbParm1[3]) - (uint)pbParm1[4]) -
(uint)pbParm1[5]) + (uint)pbParm1[6] + (uint)pbParm1[7]) -
(uint)pbParm1[8]) - (uint)pbParm1[9]) - (uint)pbParm1[10]) -
(uint)pbParm1[0xb]) + (uint)pbParm1[0xc]) - (uint)pbParm1[0xd])
+ (uint)pbParm1[0xe]) - (uint)pbParm1[0xf]) + (uint)pbParm1[0x10])
- (uint)pbParm1[0x11]) + (uint)pbParm1[0x12] + (uint)pbParm1[0x13] +
(uint)pbParm1[0x14]) - (uint)pbParm1[0x15]) + (uint)pbParm1[0x16] +
(uint)pbParm1[0x17] + (uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) -
(uint)pbParm1[0x1a]) + (uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) +
(uint)pbParm1[0x1d] + (uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) -
(uint)pbParm1[0x20]) - (uint)pbParm1[0x21]) + (uint)pbParm1[0x22]) -
(uint)pbParm1[0x23]) + (uint)pbParm1[0x24] + (uint)pbParm1[0x25] +
(uint)pbParm1[0x26]) - (uint)pbParm1[0x27]) + (uint)pbParm1[0x28] +
(uint)pbParm1[0x29];
piParm2[4] = ((((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) -
(uint)pbParm1[2]) + (uint)pbParm1[3]) -
(uint)pbParm1[4]) - (uint)pbParm1[5]) + (uint)pbParm1[6]
+ (uint)pbParm1[7] + (uint)pbParm1[8] + (uint)pbParm1[9])
- (uint)pbParm1[10]) + (uint)pbParm1[0xb] +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) +
(uint)pbParm1[0xe]) - (uint)pbParm1[0xf]) +
(uint)pbParm1[0x10] + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]
) + (uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) -
(uint)pbParm1[0x17]) - (uint)pbParm1[0x18]) + (uint)pbParm1[0x19]) -
(uint)pbParm1[0x1a]) - (uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) +
(uint)pbParm1[0x1d] + (uint)pbParm1[0x1e] + (uint)pbParm1[0x1f]) -
(uint)pbParm1[0x20]) + (uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) -
(uint)pbParm1[0x23]) + (uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) +
(uint)pbParm1[0x26]) - (uint)pbParm1[0x27]) - (uint)pbParm1[0x28]) -
(uint)pbParm1[0x29];
piParm2[5] = (((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2] +
(uint)pbParm1[3] + (uint)pbParm1[4] + (uint)pbParm1[5] +
(uint)pbParm1[6] + (uint)pbParm1[7] + (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) - (uint)pbParm1[0xb]
) - (uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) -
(uint)pbParm1[0xe]) + (uint)pbParm1[0xf]) - (uint)pbParm1[0x10])
+ (uint)pbParm1[0x11]) - (uint)pbParm1[0x12]) + (uint)pbParm1[0x13]
+ (uint)pbParm1[0x14]) - (uint)pbParm1[0x15]) + (uint)pbParm1[0x16])
- (uint)pbParm1[0x17]) + (uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) +
(uint)pbParm1[0x1a] + (uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) +
(uint)pbParm1[0x1d]) - (uint)pbParm1[0x1e]) + (uint)pbParm1[0x1f] +
(uint)pbParm1[0x20] + (uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) -
(uint)pbParm1[0x23]) - (uint)pbParm1[0x24]) + (uint)pbParm1[0x25]) -
(uint)pbParm1[0x26]) - (uint)pbParm1[0x27]) + (uint)pbParm1[0x28] +
(uint)pbParm1[0x29];
piParm2[6] = ((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2] +
(uint)pbParm1[3] + (uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6] + (uint)pbParm1[7] + (uint)pbParm1[8] +
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb] +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe] +
(uint)pbParm1[0xf] + (uint)pbParm1[0x10] + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) - (uint)pbParm1[0x14])
- (uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b] + (uint)pbParm1[0x1c] + (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) +
(uint)pbParm1[0x24] + (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) -
(uint)pbParm1[0x27]) + (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[7] = (((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1]) - (uint)pbParm1[2])
- (uint)pbParm1[3]) - (uint)pbParm1[4]) + (uint)pbParm1[5]
+ (uint)pbParm1[6]) - (uint)pbParm1[7]) + (uint)pbParm1[8] +
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) + (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) + (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b] + (uint)pbParm1[0x1c] + (uint)pbParm1[0x1d] +
(uint)pbParm1[0x1e] + (uint)pbParm1[0x1f] + (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) + (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) +
(uint)pbParm1[0x24] + (uint)pbParm1[0x25] + (uint)pbParm1[0x26] +
(uint)pbParm1[0x27]) - (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[8] = ((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) - (uint)pbParm1[2]) +
(uint)pbParm1[3] + (uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6] + (uint)pbParm1[7] + (uint)pbParm1[8] +
(uint)pbParm1[9] + (uint)pbParm1[10]) - (uint)pbParm1[0xb])
- (uint)pbParm1[0xc]) + (uint)pbParm1[0xd]) -
(uint)pbParm1[0xe]) + (uint)pbParm1[0xf] + (uint)pbParm1[0x10] +
(uint)pbParm1[0x11] + (uint)pbParm1[0x12]) - (uint)pbParm1[0x13])
+ (uint)pbParm1[0x14] + (uint)pbParm1[0x15]) - (uint)pbParm1[0x16])
- (uint)pbParm1[0x17]) + (uint)pbParm1[0x18] + (uint)pbParm1[0x19] +
(uint)pbParm1[0x1a]) - (uint)pbParm1[0x1b]) + (uint)pbParm1[0x1c]) -
(uint)pbParm1[0x1d]) - (uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) -
(uint)pbParm1[0x20]) - (uint)pbParm1[0x21]) + (uint)pbParm1[0x22]) -
(uint)pbParm1[0x23]) - (uint)pbParm1[0x24]) + (uint)pbParm1[0x25]) -
(uint)pbParm1[0x26]) - (uint)pbParm1[0x27]) + (uint)pbParm1[0x28]) -
(uint)pbParm1[0x29];
piParm2[9] = ((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2]) -
(uint)pbParm1[3]) + (uint)pbParm1[4] + (uint)pbParm1[5] +
(uint)pbParm1[6]) - (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb] +
(uint)pbParm1[0xc] + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe])
+ (uint)pbParm1[0xf] + (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]
) - (uint)pbParm1[0x12]) + (uint)pbParm1[0x13] +
(uint)pbParm1[0x14]) - (uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) -
(uint)pbParm1[0x17]) + (uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) -
(uint)pbParm1[0x1a]) - (uint)pbParm1[0x1b]) + (uint)pbParm1[0x1c] +
(uint)pbParm1[0x1d] + (uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) +
(uint)pbParm1[0x20] + (uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) -
(uint)pbParm1[0x23]) - (uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) +
(uint)pbParm1[0x26]) - (uint)pbParm1[0x27]) + (uint)pbParm1[0x28] +
(uint)pbParm1[0x29];
piParm2[10] = (((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) +
(uint)pbParm1[2] + (uint)pbParm1[3]) -
(uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6] + (uint)pbParm1[7]) - (uint)pbParm1[8])
- (uint)pbParm1[9]) - (uint)pbParm1[10]) -
(uint)pbParm1[0xb]) + (uint)pbParm1[0xc] + (uint)pbParm1[0xd]
+ (uint)pbParm1[0xe]) - (uint)pbParm1[0xf]) +
(uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13] + (uint)pbParm1[0x14])
- (uint)pbParm1[0x15]) + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]
) - (uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) + (uint)pbParm1[0x1a]
) - (uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) + (uint)pbParm1[0x1f] + (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) + (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26]) -
(uint)pbParm1[0x27]) + (uint)pbParm1[0x28] + (uint)pbParm1[0x29];
piParm2[0xb] = (((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2]
+ (uint)pbParm1[3] + (uint)pbParm1[4]) -
(uint)pbParm1[5]) + (uint)pbParm1[6] + (uint)pbParm1[7])
- (uint)pbParm1[8]) + (uint)pbParm1[9] + (uint)pbParm1[10]
) - (uint)pbParm1[0xb]) - (uint)pbParm1[0xc]) -
(uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) + (uint)pbParm1[0xf]
) - (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) + (uint)pbParm1[0x13] + (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19] + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d] +
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) +
(uint)pbParm1[0x24] + (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) -
(uint)pbParm1[0x27]) - (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0xc] = ((((((((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) -
(uint)pbParm1[2]) - (uint)pbParm1[3]) +
(uint)pbParm1[4]) - (uint)pbParm1[5]) -
(uint)pbParm1[6]) + (uint)pbParm1[7] +
(uint)pbParm1[8]) - (uint)pbParm1[9]) +
(uint)pbParm1[10]) - (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) +
(uint)pbParm1[0xe]) - (uint)pbParm1[0xf]) +
(uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) -
(uint)pbParm1[0x14]) - (uint)pbParm1[0x15]) - (uint)pbParm1[0x16]
) + (uint)pbParm1[0x17]) - (uint)pbParm1[0x18]) +
(uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) + (uint)pbParm1[0x1b]) -
(uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d]) - (uint)pbParm1[0x1e]) -
(uint)pbParm1[0x1f]) + (uint)pbParm1[0x20] + (uint)pbParm1[0x21] +
(uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) - (uint)pbParm1[0x24]) -
(uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27]) -
(uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0xd] = ((((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) +
(uint)pbParm1[2]) - (uint)pbParm1[3]) +
(uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6]) - (uint)pbParm1[7]) + (uint)pbParm1[8]
) - (uint)pbParm1[9]) + (uint)pbParm1[10]) -
(uint)pbParm1[0xb]) + (uint)pbParm1[0xc] + (uint)pbParm1[0xd]
+ (uint)pbParm1[0xe] + (uint)pbParm1[0xf]) -
(uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) + (uint)pbParm1[0x13] + (uint)pbParm1[0x14]
+ (uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) -
(uint)pbParm1[0x17]) + (uint)pbParm1[0x18] + (uint)pbParm1[0x19]) -
(uint)pbParm1[0x1a]) - (uint)pbParm1[0x1b]) + (uint)pbParm1[0x1c] +
(uint)pbParm1[0x1d]) - (uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) -
(uint)pbParm1[0x20]) + (uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) -
(uint)pbParm1[0x23]) + (uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) -
(uint)pbParm1[0x26]) - (uint)pbParm1[0x27]) + (uint)pbParm1[0x28]) -
(uint)pbParm1[0x29];
piParm2[0xe] = ((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2]) -
(uint)pbParm1[3]) - (uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6]) - (uint)pbParm1[7]) + (uint)pbParm1[8] +
(uint)pbParm1[9] + (uint)pbParm1[10]) - (uint)pbParm1[0xb]) +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) +
(uint)pbParm1[0xf] + (uint)pbParm1[0x10] + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16] + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b] + (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) + (uint)pbParm1[0x20] +
(uint)pbParm1[0x21] + (uint)pbParm1[0x22] + (uint)pbParm1[0x23] +
(uint)pbParm1[0x24] + (uint)pbParm1[0x25] + (uint)pbParm1[0x26]) -
(uint)pbParm1[0x27]) - (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0xf] = (((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2] +
(uint)pbParm1[3] + (uint)pbParm1[4] + (uint)pbParm1[5]) -
(uint)pbParm1[6]) + (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb] +
(uint)pbParm1[0xc] + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16] + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19] + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) + (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) + (uint)pbParm1[0x22] + (uint)pbParm1[0x23] +
(uint)pbParm1[0x24] + (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) +
(uint)pbParm1[0x27] + (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x10] =
(((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2] +
(uint)pbParm1[3]) - (uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6] + (uint)pbParm1[7] + (uint)pbParm1[8] +
(uint)pbParm1[9] + (uint)pbParm1[10]) - (uint)pbParm1[0xb]) +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe] +
(uint)pbParm1[0xf] + (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) + (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b] + (uint)pbParm1[0x1c] + (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) + (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) + (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) + (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27])
- (uint)pbParm1[0x28]) + (uint)pbParm1[0x29];
piParm2[0x11] =
(((((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2] +
(uint)pbParm1[3] + (uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6] + (uint)pbParm1[7] + (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) + (uint)pbParm1[0xd] + (uint)pbParm1[0xe] +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) + (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) + (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) + (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) + (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) + (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27] +
(uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x12] =
(((((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) - (uint)pbParm1[2]) -
(uint)pbParm1[3]) + (uint)pbParm1[4] + (uint)pbParm1[5]) -
(uint)pbParm1[6]) + (uint)pbParm1[7]) - (uint)pbParm1[8]) +
(uint)pbParm1[9] + (uint)pbParm1[10]) - (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11] +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) + (uint)pbParm1[0x1c] + (uint)pbParm1[0x1d] +
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) + (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) - (uint)pbParm1[0x27])
- (uint)pbParm1[0x28]) + (uint)pbParm1[0x29];
piParm2[0x13] =
(((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2] +
(uint)pbParm1[3]) - (uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6]) - (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) - (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe] +
(uint)pbParm1[0xf] + (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13] + (uint)pbParm1[0x14] +
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d] +
(uint)pbParm1[0x1e] + (uint)pbParm1[0x1f] + (uint)pbParm1[0x20] + (uint)pbParm1[0x21])
- (uint)pbParm1[0x22]) + (uint)pbParm1[0x23]) - (uint)pbParm1[0x24]) -
(uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27] + (uint)pbParm1[0x28]) -
(uint)pbParm1[0x29];
piParm2[0x14] =
(((((((((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1]) - (uint)pbParm1[2]) -
(uint)pbParm1[3]) - (uint)pbParm1[4]) + (uint)pbParm1[5]) -
(uint)pbParm1[6]) + (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) + (uint)pbParm1[10] + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) + (uint)pbParm1[0x14] +
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) +
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) + (uint)pbParm1[0x23] + (uint)pbParm1[0x24]
) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26]) - (uint)pbParm1[0x27]) +
(uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x15] =
((((((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) - (uint)pbParm1[2]) -
(uint)pbParm1[3]) + (uint)pbParm1[4] + (uint)pbParm1[5] +
(uint)pbParm1[6] + (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) - (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) + (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16] + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) + (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) - (uint)pbParm1[0x27])
- (uint)pbParm1[0x28]) + (uint)pbParm1[0x29];
piParm2[0x16] =
((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2] +
(uint)pbParm1[3] + (uint)pbParm1[4] + (uint)pbParm1[5] +
(uint)pbParm1[6] + (uint)pbParm1[7]) - (uint)pbParm1[8]) +
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) + (uint)pbParm1[0xd] + (uint)pbParm1[0xe] +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11] +
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) +
(uint)pbParm1[0x15] + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d] +
(uint)pbParm1[0x1e] + (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) +
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26]) - (uint)pbParm1[0x27])
+ (uint)pbParm1[0x28] + (uint)pbParm1[0x29];
piParm2[0x17] =
((((((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2] +
(uint)pbParm1[3]) - (uint)pbParm1[4]) - (uint)pbParm1[5]) -
(uint)pbParm1[6]) - (uint)pbParm1[7]) + (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb] +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d] +
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26]) - (uint)pbParm1[0x27])
- (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x18] =
((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1]) - (uint)pbParm1[2]) +
(uint)pbParm1[3] + (uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6] + (uint)pbParm1[7]) - (uint)pbParm1[8]) +
(uint)pbParm1[9] + (uint)pbParm1[10]) - (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) +
(uint)pbParm1[0xf] + (uint)pbParm1[0x10] + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) + (uint)pbParm1[0x13] + (uint)pbParm1[0x14] +
(uint)pbParm1[0x15] + (uint)pbParm1[0x16] + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d] +
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) + (uint)pbParm1[0x20] +
(uint)pbParm1[0x21] + (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) - (uint)pbParm1[0x24]
) - (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27] +
(uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x19] =
(((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2] +
(uint)pbParm1[3]) - (uint)pbParm1[4]) + (uint)pbParm1[5] +
(uint)pbParm1[6]) - (uint)pbParm1[7]) + (uint)pbParm1[8] +
(uint)pbParm1[9] + (uint)pbParm1[10]) - (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11] +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16] + (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) + (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) + (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) +
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) +
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26]) - (uint)pbParm1[0x27])
+ (uint)pbParm1[0x28] + (uint)pbParm1[0x29];
piParm2[0x1a] =
((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2] +
(uint)pbParm1[3] + (uint)pbParm1[4]) - (uint)pbParm1[5]) -
(uint)pbParm1[6]) + (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) - (uint)pbParm1[0xb]) +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) + (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) +
(uint)pbParm1[0x15] + (uint)pbParm1[0x16] + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) +
(uint)pbParm1[0x1e] + (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) + (uint)pbParm1[0x23] + (uint)pbParm1[0x24])
- (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27] + (uint)pbParm1[0x28] +
(uint)pbParm1[0x29];
piParm2[0x1b] =
((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2]) -
(uint)pbParm1[3]) + (uint)pbParm1[4]) - (uint)pbParm1[5]) -
(uint)pbParm1[6]) - (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) - (uint)pbParm1[0xb]) +
(uint)pbParm1[0xc] + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) +
(uint)pbParm1[0xf] + (uint)pbParm1[0x10] + (uint)pbParm1[0x11] +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19] + (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) + (uint)pbParm1[0x1c] + (uint)pbParm1[0x1d] +
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) + (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) - (uint)pbParm1[0x27])
- (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x1c] =
(((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2] +
(uint)pbParm1[3] + (uint)pbParm1[4]) - (uint)pbParm1[5]) +
(uint)pbParm1[6] + (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) + (uint)pbParm1[10] + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11] +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) + (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) + (uint)pbParm1[0x22] + (uint)pbParm1[0x23] + (uint)pbParm1[0x24]) -
(uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27] + (uint)pbParm1[0x28] +
(uint)pbParm1[0x29];
piParm2[0x1d] =
(((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1]) - (uint)pbParm1[2]) -
(uint)pbParm1[3]) - (uint)pbParm1[4]) + (uint)pbParm1[5] +
(uint)pbParm1[6] + (uint)pbParm1[7]) - (uint)pbParm1[8]) +
(uint)pbParm1[9]) - (uint)pbParm1[10]) - (uint)pbParm1[0xb]) +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe] +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11] +
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) + (uint)pbParm1[0x14] +
(uint)pbParm1[0x15] + (uint)pbParm1[0x16] + (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) + (uint)pbParm1[0x19] + (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) + (uint)pbParm1[0x1c] + (uint)pbParm1[0x1d] + (uint)pbParm1[0x1e]
+ (uint)pbParm1[0x1f] + (uint)pbParm1[0x20]) - (uint)pbParm1[0x21]) -
(uint)pbParm1[0x22]) + (uint)pbParm1[0x23] + (uint)pbParm1[0x24]) - (uint)pbParm1[0x25])
+ (uint)pbParm1[0x26] + (uint)pbParm1[0x27]) - (uint)pbParm1[0x28]) + (uint)pbParm1[0x29];
piParm2[0x1e] =
(((((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2] +
(uint)pbParm1[3]) - (uint)pbParm1[4]) - (uint)pbParm1[5]) -
(uint)pbParm1[6]) - (uint)pbParm1[7]) + (uint)pbParm1[8] +
(uint)pbParm1[9]) - (uint)pbParm1[10]) - (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) + (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) + (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) + (uint)pbParm1[0x23] + (uint)pbParm1[0x24] +
(uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27] + (uint)pbParm1[0x28] +
(uint)pbParm1[0x29];
piParm2[0x1f] =
(((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1]) - (uint)pbParm1[2]) +
(uint)pbParm1[3] + (uint)pbParm1[4]) - (uint)pbParm1[5]) -
(uint)pbParm1[6]) + (uint)pbParm1[7] + (uint)pbParm1[8] +
(uint)pbParm1[9] + (uint)pbParm1[10] + (uint)pbParm1[0xb] +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) + (uint)pbParm1[0x10] + (uint)pbParm1[0x11] +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) +
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) + (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) +
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) + (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) + (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27])
- (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x20] =
((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2] +
(uint)pbParm1[3]) - (uint)pbParm1[4]) + (uint)pbParm1[5] +
(uint)pbParm1[6] + (uint)pbParm1[7] + (uint)pbParm1[8]) -
(uint)pbParm1[9]) + (uint)pbParm1[10] + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) + (uint)pbParm1[0xd] + (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) + (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13] + (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) + (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) + (uint)pbParm1[0x19] + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) + (uint)pbParm1[0x22] + (uint)pbParm1[0x23] + (uint)pbParm1[0x24] +
(uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27]) - (uint)pbParm1[0x28])
+ (uint)pbParm1[0x29];
piParm2[0x21] =
((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) - (uint)pbParm1[2]) +
(uint)pbParm1[3] + (uint)pbParm1[4] + (uint)pbParm1[5] +
(uint)pbParm1[6]) - (uint)pbParm1[7]) - (uint)pbParm1[8]) +
(uint)pbParm1[9] + (uint)pbParm1[10] + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe] +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) +
(uint)pbParm1[0x15] + (uint)pbParm1[0x16] + (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) +
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26]) - (uint)pbParm1[0x27])
- (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x22] =
(((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1]) - (uint)pbParm1[2]) +
(uint)pbParm1[3]) - (uint)pbParm1[4]) - (uint)pbParm1[5]) -
(uint)pbParm1[6]) + (uint)pbParm1[7] + (uint)pbParm1[8] +
(uint)pbParm1[9] + (uint)pbParm1[10] + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) +
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16] + (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b] + (uint)pbParm1[0x1c] + (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) - (uint)pbParm1[0x24]
) + (uint)pbParm1[0x25] + (uint)pbParm1[0x26] + (uint)pbParm1[0x27]) - (uint)pbParm1[0x28])
- (uint)pbParm1[0x29];
piParm2[0x23] =
(((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) + (uint)pbParm1[2] +
(uint)pbParm1[3] + (uint)pbParm1[4]) - (uint)pbParm1[5]) -
(uint)pbParm1[6]) + (uint)pbParm1[7] + (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb] +
(uint)pbParm1[0xc] + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) + (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b] + (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) + (uint)pbParm1[0x1f] + (uint)pbParm1[0x20]) - (uint)pbParm1[0x21])
+ (uint)pbParm1[0x22] + (uint)pbParm1[0x23] + (uint)pbParm1[0x24] + (uint)pbParm1[0x25] +
(uint)pbParm1[0x26] + (uint)pbParm1[0x27]) - (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x24] =
((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2]) -
(uint)pbParm1[3]) - (uint)pbParm1[4]) - (uint)pbParm1[5]) -
(uint)pbParm1[6]) + (uint)pbParm1[7] + (uint)pbParm1[8] +
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb] +
(uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) + (uint)pbParm1[0xe] +
(uint)pbParm1[0xf] + (uint)pbParm1[0x10] + (uint)pbParm1[0x11] +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13] + (uint)pbParm1[0x14] +
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) -
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) + (uint)pbParm1[0x1d] +
(uint)pbParm1[0x1e] + (uint)pbParm1[0x1f] + (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) + (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) + (uint)pbParm1[0x27] +
(uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x25] =
(((((((((((((((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) - (uint)pbParm1[2])
+ (uint)pbParm1[3]) - (uint)pbParm1[4]) + (uint)pbParm1[5]
) - (uint)pbParm1[6]) - (uint)pbParm1[7]) - (uint)pbParm1[8]
) - (uint)pbParm1[9]) + (uint)pbParm1[10]) - (uint)pbParm1[0xb]
) - (uint)pbParm1[0xc]) - (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]
) - (uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) + (uint)pbParm1[0x11]
+ (uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) - (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) +
(uint)pbParm1[0x18]) - (uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) +
(uint)pbParm1[0x1e] + (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) +
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) + (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26]) - (uint)pbParm1[0x27])
- (uint)pbParm1[0x28]) - (uint)pbParm1[0x29];
piParm2[0x26] =
(((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2] +
(uint)pbParm1[3]) - (uint)pbParm1[4]) + (uint)pbParm1[5] +
(uint)pbParm1[6] + (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb] +
(uint)pbParm1[0xc] + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) + (uint)pbParm1[0x14] +
(uint)pbParm1[0x15]) - (uint)pbParm1[0x16]) + (uint)pbParm1[0x17] +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19] + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b]) - (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) +
(uint)pbParm1[0x1e] + (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) + (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) - (uint)pbParm1[0x24]
) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26] + (uint)pbParm1[0x27] + (uint)pbParm1[0x28])
- (uint)pbParm1[0x29];
piParm2[0x27] =
((((((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) - (uint)pbParm1[2]) -
(uint)pbParm1[3]) - (uint)pbParm1[4]) + (uint)pbParm1[5]) -
(uint)pbParm1[6]) - (uint)pbParm1[7]) - (uint)pbParm1[8]) +
(uint)pbParm1[9]) - (uint)pbParm1[10]) + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) + (uint)pbParm1[0xd] + (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) +
(uint)pbParm1[0x12] + (uint)pbParm1[0x13] + (uint)pbParm1[0x14] +
(uint)pbParm1[0x15] + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) +
(uint)pbParm1[0x18] + (uint)pbParm1[0x19] + (uint)pbParm1[0x1a] + (uint)pbParm1[0x1b]
+ (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) + (uint)pbParm1[0x1e] +
(uint)pbParm1[0x1f] + (uint)pbParm1[0x20] + (uint)pbParm1[0x21] + (uint)pbParm1[0x22]) -
(uint)pbParm1[0x23]) - (uint)pbParm1[0x24]) + (uint)pbParm1[0x25] + (uint)pbParm1[0x26] +
(uint)pbParm1[0x27]) - (uint)pbParm1[0x28]) + (uint)pbParm1[0x29];
piParm2[0x28] =
(((((((((((((((((((((((uint)*pbParm1 - (uint)pbParm1[1]) - (uint)pbParm1[2]) -
(uint)pbParm1[3]) + (uint)pbParm1[4] + (uint)pbParm1[5] + (uint)pbParm1[6]
) - (uint)pbParm1[7]) + (uint)pbParm1[8] + (uint)pbParm1[9]) -
(uint)pbParm1[10]) + (uint)pbParm1[0xb]) - (uint)pbParm1[0xc]) -
(uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) + (uint)pbParm1[0xf] +
(uint)pbParm1[0x10] + (uint)pbParm1[0x11] + (uint)pbParm1[0x12] +
(uint)pbParm1[0x13] + (uint)pbParm1[0x14] + (uint)pbParm1[0x15] +
(uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) + (uint)pbParm1[0x18] +
(uint)pbParm1[0x19]) - (uint)pbParm1[0x1a]) + (uint)pbParm1[0x1b] +
(uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) + (uint)pbParm1[0x1e] + (uint)pbParm1[0x1f]
+ (uint)pbParm1[0x20]) - (uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) +
(uint)pbParm1[0x23] + (uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) + (uint)pbParm1[0x26] +
(uint)pbParm1[0x27] + (uint)pbParm1[0x28] + (uint)pbParm1[0x29];
piParm2[0x29] =
((((((((((((((((((((((((((((((((uint)*pbParm1 + (uint)pbParm1[1] + (uint)pbParm1[2] +
(uint)pbParm1[3] + (uint)pbParm1[4] + (uint)pbParm1[5] +
(uint)pbParm1[6]) - (uint)pbParm1[7]) - (uint)pbParm1[8]) -
(uint)pbParm1[9]) + (uint)pbParm1[10] + (uint)pbParm1[0xb]) -
(uint)pbParm1[0xc]) + (uint)pbParm1[0xd]) - (uint)pbParm1[0xe]) -
(uint)pbParm1[0xf]) - (uint)pbParm1[0x10]) - (uint)pbParm1[0x11]) -
(uint)pbParm1[0x12]) - (uint)pbParm1[0x13]) + (uint)pbParm1[0x14]) -
(uint)pbParm1[0x15]) + (uint)pbParm1[0x16]) - (uint)pbParm1[0x17]) -
(uint)pbParm1[0x18]) + (uint)pbParm1[0x19] + (uint)pbParm1[0x1a] +
(uint)pbParm1[0x1b] + (uint)pbParm1[0x1c]) - (uint)pbParm1[0x1d]) -
(uint)pbParm1[0x1e]) - (uint)pbParm1[0x1f]) - (uint)pbParm1[0x20]) -
(uint)pbParm1[0x21]) - (uint)pbParm1[0x22]) - (uint)pbParm1[0x23]) -
(uint)pbParm1[0x24]) - (uint)pbParm1[0x25]) - (uint)pbParm1[0x26]) - (uint)pbParm1[0x27])
- (uint)pbParm1[0x28]) + (uint)pbParm1[0x29];
return;
}
'''
#对伪代码进行处理
for i in range(42):
exec(r'a = re.sub(r"\(uint\)pbParm1\[' + hex(i) + r'\]","' + "m[" + str(i) + "]\",a)")
for i in range(1,11):
exec(r'a = re.sub(r"\(uint\)pbParm1\[' + str(i) + r'\]","' + "m[" + str(i) + "]\",a)")
exec(r'a = re.sub(r"\(uint\)\*pbParm1","m[0]",a)')
exec(r'a = re.sub(r"\*piParm2","piParm2[0]",a)')
exec(r'a = re.sub(r" ","",a)')
exec(r'a = re.sub(r"\t","",a)')
exec(r'a = re.sub(r"\n","",a)')
exec(r'a = re.sub(r"=","==",a)')
#创建一个42个元素的数组,每个元素位z3.Int类型的对象
m = [z3.Int('m%d' % i) for i in range(42)]
#把所有42元的方程提取出来
pttern = re.compile(r"piParm2.*?;")
tmp = pttern.findall(a)
#创造一个通用 solver
solver = z3.Solver()
for i in m:
#添加约束到solver中
solver.add(i>=0)
solver.add(i<=0xff)
for i in tmp:
solver.add(eval(i[:-1]))
flag = []
# 检查 solver 中的约束是否满足
# satisfiable/满足
# unsatisfiable/不满足
if solver.check() == z3.sat:
# model() 返回最后一个 check() 的 model
# decls() 返回 model 包含了所有符号的列表
tmp = solver.model()
for i in range(42):
flag.append(tmp[m[i]].as_long() ^ i)
flag = "".join(map(lambda x:chr(((x >> 3) | (x << 5)) & 0xff),flag))
print(flag)
HCTF-2015:RE-Crc-300
RE-Crc-300
z3学习,正则表达式下的文本处理,还有暴力破解,之前接触的也少,上了一课。
转载处理,没自己的东西。
期末自救计划启动