手动vm之用极长的不含if的代码打一个if
本帖最后由 ttbbs 于 2024-3-24 22:54 编辑#include <iostream>
#include <windows.h>
#define P(a,b)((~a),(~b))
#define FA(a) P(a,a)
#define FB(a,b) P(P(a,a),P(b,b))
#define FC(a,b) P(P(a,b),P(a,b))
#define FD(a,b) P(P(P(a,a),P(b,b)),P(a,b))
#define FE(a,b) (FB(a,b)+FC(a,b))
int main() {
int x, y, z, jug;
x = 3;
y = 3;
z = FA(FE(FA(x), y));
jug = 0;
for (int i = 1; i < 128; i++) {
__asm {
push edx
}
jug = FC(jug, FB(z, 1));
__asm {
pop edx
shr z, 1
}
}
jug = FA(jug);
__asm {
push s1
push s2
mov eax, jug
sub, eax
s2 : ret
nop
}
std::cout << "x=y" << std::endl;
s1:system("pause");
} weakptr 发表于 2021-11-26 07:38
add ,jug
ret
其实就是判断z二进制里是否有一的结果,有一就是零,无一就是一 add ,jug
ret
jug是啥呢 我是新手,学习学习。 本帖最后由 yuleniwo 于 2021-11-26 08:52 编辑
weakptr 发表于 2021-11-26 07:38
add ,jug
ret
不好意思,回复错了,不能自己删除。 膜拜大佬,新人学习学习。 支持一下 学习学习 我的cm就是这种原理 cpujazz 发表于 2021-11-26 14:35
我的cm就是这种原理
看来是大神了,大神还知道其他混淆方式吗?
页:
[1]
2