请问有什么方法可以判断两段汇编代码是否相同或者相似度吗?

如题,现在困扰我两天了,恳求一个方法。该如何比较 两段汇编代码是否相同呢,
比如截取出的一段汇编是:

004022c0 55 push ebp

004022c1 8bec mov ebp, esp

004022c3 6aff push 0xffffffff

004022c5 6878b44700 push 0x47b478

004022ca 64a100000000 mov eax, [fs:0x0]

004022d0 50 push eax

004022d1 51 push ecx

004022d2 53 push ebx

004022d3 56 push esi

004022d4 57 push edi

004022d5 a170734a00 mov eax, [0x4a7370]

004022da 33c5 xor eax, ebp

004022dc 50 push eax

004022dd 8d45f4 lea eax, [ebp-0xc]

004022e0 64a300000000 mov [fs:0x0], eax

004022e6 33c0 xor eax, eax

004022e8 8945fc mov [ebp-0x4], eax

004022eb 83ec1c sub esp, 0x1c

004022ee 8bcc mov ecx, esp

另一段是
00402302 50 push eax

00402303 83c8ff or eax, 0xffffffff

00402306 33db xor ebx, ebx

00402308 e8f30e0000 call 0x2200

0040230d e8eeefffff call 0x300

00402312 8bf8 mov edi, eax

00402314 83c41c add esp, 0x1c

00402317 85ff test edi, edi

00402319 0f843c010000 jz 0x145b

0040231f 53 push ebx

00402320 57 push edi

00402321 ff1550c04700 call dword [0x47c050]

请问有什么方法或思路 可以比较这两段的相似度吗?

1个回答

我想应该用等价这个词而不是相似。
假定在运行之前,有相同的上下文(内存、寄存器的值一样),运行两个代码,结果上下文如果还是一样的,两个代码就等价。
如果各种用例都一样,那么就可以说它们实现了相同的功能

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐