李沉舟 发表于 2019-2-19 16:35

备忘录:一些逻辑运算的公式推导(VMP、OLLVM)

知识点:命题逻辑 - > 等值演算
离散数学教材上给出了24个等值式,与蕴涵式有关的等值式混淆里面用不到,剩下的基本上都属于常识性内容……
VMP万用门:万用门其实就是数字电路中的与非门,一般是用Nand表示。
Nand(a,b) = ~a & ~b

Not(a) = ~a = ~a & ~a = Nand(a,a)

Or(a,b) = a | b = ~(~a & ~b) = Nand(Nand(a,b),Nand(a,b))

And(a,b) = a & b = ~~a & ~~b = Nand(Nand(a,a),Nand(b,b))

Xor(a,b) = (~a & b) | (a & ~b) = (0 | (a & ~b)) | (0 | (b & ~a)) = (a & (~a | ~b)) | (b & (~a | ~b)) = (~a | ~b) & (a | b) = ~(a & b) | ~(~a & ~b) = Nand(And(a,b),Nand(a,b)) = Nand(Nand(Nand(a,a),Nand(b,b)),Nand(a,b))

-a = ~a + 1


a - b = ~(a - b) + 1 = ~(a - b - 1) = ~(~a + 1 - 1 + b) = ~(~a + b)


减法公式的证明只能说是“自我安慰”,因为我不清楚如何证明其EFLAGS的得到过程。


OLLVM的指令替代混淆:


a = b & c=>a = (b ^ ~c) & b
证明过程:

a = ((~b & ~c) | (b & c)) & b = ((~b & ~c) & b) | ((b & c) & b) = (0 & (b & ~c)) | (b & (b & c)) = b & (b & c) = b & c


a = b | c=>a = (b & c) | (b ^ c)
证明过程:
a = (b & c) | ((~b & c) | (b & ~c)) = (b & c) | (~b & c) | (b & ~c) = b | c


a = a ^ b=>a = (~a & b) | (a & ~b)
证明过程:
易证……

OLLVM的文档:https://github.com/obfuscator-llvm/obfuscator/wiki/Instructions-Substitution

Shark恒 发表于 2019-2-19 17:47

好骚气,看的我头晕眼花的

售野生奥特曼 发表于 2019-2-21 15:07

需不懂,但觉吊!

six 发表于 2019-2-26 21:27

很牛掰的说。要想看懂还得学习

turbojet 发表于 2019-3-31 16:48

THANKS for sharing

拿着雪糕 发表于 2022-2-8 02:03

感谢大佬分享

zwj00544 发表于 2022-2-8 06:07

[快捷回复]-学破解防逆向,知进攻懂防守!

东方 发表于 2022-2-8 08:45

感谢分享

别管我了行 发表于 2022-5-7 02:26

4957465 发表于 2022-5-7 21:08

页: [1] 2 3
查看完整版本: 备忘录:一些逻辑运算的公式推导(VMP、OLLVM)