更改用户名CRC32解密回帖奖励召回投票记录删除领夜猫子帮助中心 本站已运行

易语言MASM置入代码比较两个字节集数组成员数/内容/长度全部等于相同一致(返回逻辑型)

[复制链接]
查看158 | 回复0 | 2019-9-18 10:00:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册有礼

x

  1. .版本 2
  2. .支持库 spec

  3. .程序集 程序集1

  4. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


  5. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  6. 返回 (0)  ' 可以根据您的需要返回任意数值

  7. .子程序 _临时子程序
  8. .局部变量 A, 字节集, , "3"
  9. .局部变量 B, 字节集, , "3"

  10. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  11. A [1] = { 1, 2, 3, 4, 5 }
  12. A [2] = {  }
  13. A [3] = { 7 }
  14. B [1] = { 1, 2, 3, 4, 5 }
  15. B [2] = {  }
  16. B [3] = { 7 }
  17. 调试输出 (A, B, 字节集数组_等于 (A, B))
  18. B [1] = { 1, 2, 3, 5, 4 }
  19. 调试输出 (A, B, 字节集数组_等于 (A, B))



  20. .子程序 字节集数组_等于, 逻辑型, 公开
  21. .参数 字节集数组A, 字节集, 数组
  22. .参数 字节集数组B, 字节集, 数组

  23. 置入代码 ({ 235, 48, 80, 50, 255, 83, 129, 227, 255, 0, 0, 0, 139, 4, 43, 91, 11, 192, 117, 2, 235, 26, 139, 0, 11, 192, 117, 2, 235, 18, 139, 64, 4, 11, 192, 116, 7, 61, 0, 0, 0, 128, 114, 2, 235, 2, 183, 1, 88, 195, 83, 81, 82, 86, 87, 179, 8, 232, 196, 255, 255, 255, 138, 207, 179, 12, 232, 187, 255, 255, 255, 138, 239, 128, 241, 1, 128, 245, 1, 10, 201, 116, 16, 10, 237, 116, 12, 184, 1, 0, 0, 0, 233, 144, 0, 0, 0, 235, 16, 10, 201, 117, 8, 10, 237, 116, 8, 56, 233, 116, 4, 51, 192, 235, 126, 139, 69, 8, 139, 0, 139, 80, 4, 139, 93, 12, 139, 27, 59, 83, 4, 116, 4, 51, 192, 235, 104, 131, 192, 8, 131, 195, 8, 51, 201, 235, 85, 139, 52, 136, 139, 60, 139, 11, 246, 116, 4, 11, 255, 117, 10, 59, 247, 116, 6, 51, 192, 235, 72, 235, 60, 11, 246, 116, 56, 11, 255, 116, 52, 59, 247, 116, 48, 82, 139, 86, 4, 59, 87, 4, 116, 5, 51, 192, 90, 235, 44, 131, 198, 8, 131, 199, 8, 81, 83, 51, 201, 235, 15, 138, 28, 49, 58, 28, 57, 116, 6, 51, 192, 91, 89, 235, 18, 65, 59, 202, 114, 237, 91, 89, 90, 65, 59, 202, 114, 167, 184, 1, 0, 0, 0, 95, 94, 90, 89, 91, 201, 194, 8, 0 })
  24. ' jmp MAIN
  25. ' IS_DATA_ARRAY:
  26. ' push eax
  27. ' xor bh,bh
  28. ' push ebx
  29. ' and ebx,255
  30. ' mov eax,[ebp+ebx]
  31. ' pop ebx
  32. ' .if !eax
  33. ' jmp IS_DATA_ARRAY_END
  34. ' .endif
  35. ' mov eax,[eax]
  36. ' .if !eax
  37. ' jmp IS_DATA_ARRAY_END
  38. ' .endif
  39. ' mov eax,[eax+4]
  40. ' .if !eax || eax >= 80000000H
  41. ' jmp IS_DATA_ARRAY_END
  42. ' .endif
  43. ' mov bh,1
  44. ' IS_DATA_ARRAY_END:
  45. ' pop eax
  46. ' ret
  47. ' MAIN:
  48. ' push ebx
  49. ' push ecx
  50. ' push edx
  51. ' push esi
  52. ' push edi
  53. ' mov bl,8
  54. ' call IS_DATA_ARRAY
  55. ' mov cl,bh
  56. ' mov bl,12
  57. ' call IS_DATA_ARRAY
  58. ' mov ch,bh
  59. ' xor cl,1
  60. ' xor ch,1
  61. ' .if cl && ch
  62. ' mov eax,1
  63. ' jmp ASM_END
  64. ' .elseif cl || ch && cl != ch
  65. ' xor eax,eax
  66. ' jmp ASM_END
  67. ' .endif
  68. ' mov eax,[ebp+8]
  69. ' mov eax,[eax]
  70. ' mov edx,[eax+4]
  71. ' mov ebx,[ebp+12]
  72. ' mov ebx,[ebx]
  73. ' .if edx != [ebx+4]
  74. ' xor eax,eax
  75. ' jmp ASM_END
  76. ' .endif
  77. ' add eax,8
  78. ' add ebx,8
  79. ' xor ecx,ecx
  80. ' .while ecx < edx
  81. ' mov esi,[eax+ecx*4]
  82. ' mov edi,[ebx+ecx*4]
  83. ' .if (!esi || !edi) && esi != edi
  84. ' xor eax,eax
  85. ' jmp ASM_END
  86. ' .elseif esi && edi && esi != edi
  87. ' push edx
  88. ' mov edx,[esi+4]
  89. ' .if edx != [edi+4]
  90. ' xor eax,eax
  91. ' pop edx
  92. ' jmp ASM_END
  93. ' .endif

  94. ' add esi,8
  95. ' add edi,8
  96. ' push ecx
  97. ' push ebx
  98. ' xor ecx,ecx
  99. ' .while ecx < edx
  100. ' mov bl,[esi+ecx]
  101. ' .if bl != [edi+ecx]
  102. ' xor eax,eax
  103. ' pop ebx
  104. ' pop ecx
  105. ' jmp ASM_END
  106. ' .endif
  107. ' inc ecx
  108. ' .endw
  109. ' pop ebx
  110. ' pop ecx
  111. ' pop edx
  112. ' .endif
  113. ' inc ecx
  114. ' .endw
  115. ' mov eax,1
  116. ' ASM_END:
  117. ' pop edi
  118. ' pop esi
  119. ' pop edx
  120. ' pop ecx
  121. ' pop ebx
  122. ' leave
  123. ' retn 8

  124. 返回 (假)

复制代码

相关帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册有礼

本版积分规则