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

易语言MASM置入代码 置字节集内字节集() 长字节集指定位置覆盖短字节集 (返回逻辑型)

[复制链接]
查看98 | 回复0 | 2019-10-1 20:00:00 |阅读模式

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

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

x

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

  3. .程序集 程序集1

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


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

  7. .子程序 _临时子程序
  8. .局部变量 长字节集, 字节集
  9. .局部变量 短字节集, 字节集

  10. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。0
  11. 长字节集 = 取重复字节集 (8, { 111, 222, 123, 100 })
  12. 短字节集 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
  13. 调试输出 (置字节集内字节集 (长字节集, 10, 短字节集))
  14. 调试输出 (长字节集, 短字节集)



  15. .子程序 置字节集内字节集, 逻辑型, 公开, 设置字节集中所指定位置处覆盖其他字节集数据
  16. .参数 待处理的字节集, 字节集, 参考
  17. .参数 欲设置字节集所处偏移, 整数型, , 下标0开始
  18. .参数 欲设置的字节集, 字节集

  19. 置入代码 ({ 83, 81, 82, 86, 87, 139, 69, 8, 11, 192, 117, 5, 233, 149, 0, 0, 0, 139, 0, 11, 192, 117, 5, 233, 138, 0, 0, 0, 141, 112, 8, 139, 64, 4, 139, 77, 12, 139, 93, 16, 11, 219, 117, 4, 51, 192, 235, 118, 139, 27, 11, 219, 117, 4, 51, 192, 235, 108, 141, 123, 8, 139, 91, 4, 86, 139, 240, 43, 243, 178, 1, 129, 254, 0, 0, 0, 128, 114, 4, 50, 210, 235, 49, 59, 206, 118, 4, 50, 210, 235, 41, 11, 192, 116, 7, 61, 0, 0, 0, 128, 114, 4, 50, 210, 235, 26, 11, 219, 116, 8, 129, 251, 0, 0, 0, 128, 114, 4, 50, 210, 235, 10, 129, 249, 0, 0, 0, 128, 114, 2, 50, 210, 94, 10, 210, 117, 4, 51, 192, 235, 25, 135, 222, 135, 207, 51, 192, 235, 8, 138, 20, 8, 136, 20, 31, 71, 64, 59, 198, 114, 244, 184, 1, 0, 0, 0, 95, 94, 90, 89, 91, 201, 194, 12, 0 })
  20. ' push ebx
  21. ' push ecx
  22. ' push edx
  23. ' push esi
  24. ' push edi
  25. ' mov eax,[ebp+8]
  26. ' .if eax == 0
  27. ' jmp ASM_END
  28. ' .endif
  29. ' mov eax,[eax]
  30. ' .if eax == 0
  31. ' jmp ASM_END
  32. ' .endif
  33. ' lea esi,[eax+8]
  34. ' mov eax,[eax+4]
  35. ' mov ecx,[ebp+12]
  36. ' mov ebx,[ebp+16]
  37. ' .if ebx == 0
  38. ' xor eax,eax
  39. ' jmp ASM_END
  40. ' .endif
  41. ' mov ebx,[ebx]
  42. ' .if ebx == 0
  43. ' xor eax,eax
  44. ' jmp ASM_END
  45. ' .endif
  46. ' lea edi,[ebx+8]
  47. ' mov ebx,[ebx+4]
  48. ' push esi
  49. ' mov esi,eax
  50. ' sub esi,ebx
  51. ' mov dl,1
  52. ' .if esi >= 80000000H
  53. ' xor dl,dl
  54. ' .elseif ecx > esi
  55. ' xor dl,dl
  56. ' .elseif eax == 0 || eax >= 80000000H
  57. ' xor dl,dl
  58. ' .elseif ebx == 0 || ebx >= 80000000H
  59. ' xor dl,dl
  60. ' .elseif ecx >= 80000000H
  61. ' xor dl,dl
  62. ' .endif
  63. ' pop esi
  64. ' .if dl == 0
  65. ' xor eax,eax
  66. ' jmp ASM_END
  67. ' .endif
  68. ' xchg ebx,esi
  69. ' xchg ecx,edi
  70. ' xor eax,eax
  71. ' .while eax < esi
  72. ' mov dl,[ecx+eax]
  73. ' mov [ebx+edi],dl
  74. ' inc edi
  75. ' inc eax
  76. ' .endw
  77. ' mov eax,1
  78. ' ASM_END:
  79. ' pop edi
  80. ' pop esi
  81. ' pop edx
  82. ' pop ecx
  83. ' pop ebx
  84. ' leave
  85. ' retn 12

  86. 返回 (假)

复制代码

相关帖子

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

本版积分规则