keto 2019-06-22 16:22 采纳率: 0%
浏览 549

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

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

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条回答 默认 最新

  • threenewbee 2019-06-22 22:07
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序