设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 1941|回复: 0
收起左侧

易语言MASM置入代码实现MD5的 F(X,Y,Z) G(X,Y,Z) H(X,Y,Z) I(X,Y,Z) 函数(返回整数型)

[复制链接]
发表于 2020-7-5 23:58:02 | 显示全部楼层 |阅读模式
本帖最后由 EAX 于 2020-7-6 00:05 编辑

1.png

  1. .版本 2

  2. .程序集 程序集1

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

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

  6. .子程序 _临时子程序

  7. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。

  8. 检查 (MD5_F (1234567890, 777777777, 987654321) = 979004017)
  9. 检查 (MD5_G (1234567890, 777777777, 987654321) = 211260112)
  10. 检查 (MD5_H (1234567890, 777777777, 987654321) = 1561565202)
  11. 检查 (MD5_I (1234567890, 777777777, 987654321) = -471046737)

  12. .子程序 MD5_F, 整数型, , F(X,Y,Z) = ((X&Y)|(~X&Z))
  13. .参数 X, 整数型
  14. .参数 Y, 整数型
  15. .参数 Z, 整数型

  16. 置入代码 ({ 83, 139, 69, 8, 35, 69, 12, 139, 93, 8, 247, 211, 35, 93, 16, 11, 195, 91, 201, 194, 12, 0 })
  17. ' push ebx
  18. ' mov eax,[ebp+8]
  19. ' and eax,[ebp+12]
  20. ' mov ebx,[ebp+8]
  21. ' not ebx
  22. ' and ebx,[ebp+16]
  23. ' or eax,ebx
  24. ' pop ebx
  25. ' leave
  26. ' retn 12
  27. 返回 (0)
  28. ' 返回 (位或 (位与 (X, Y), 位与 (位取反 (X), Z)))

  29. .子程序 MD5_G, 整数型, , G(X,Y,Z) = ((X&Z)|(Y&~Z))
  30. .参数 X, 整数型
  31. .参数 Y, 整数型
  32. .参数 Z, 整数型

  33. 置入代码 ({ 83, 139, 69, 8, 35, 69, 16, 139, 93, 16, 247, 211, 35, 93, 12, 11, 195, 91, 201, 194, 12, 0 })
  34. ' push ebx
  35. ' mov eax,[ebp+8]
  36. ' and eax,[ebp+16]
  37. ' mov ebx,[ebp+16]
  38. ' not ebx
  39. ' and ebx,[ebp+12]
  40. ' or eax,ebx
  41. ' pop ebx
  42. ' leave
  43. ' retn 12
  44. 返回 (0)
  45. ' 返回 (位或 (位与 (X, Z), 位与 (Y, 位取反 (Z))))

  46. .子程序 MD5_H, 整数型, , H(X,Y,Z) = (X^Y^Z)
  47. .参数 X, 整数型
  48. .参数 Y, 整数型
  49. .参数 Z, 整数型

  50. 置入代码 ({ 139, 69, 8, 51, 69, 12, 51, 69, 16, 201, 194, 12, 0 })
  51. ' mov eax,[ebp+8]
  52. ' xor eax,[ebp+12]
  53. ' xor eax,[ebp+16]
  54. ' leave
  55. ' retn 12
  56. 返回 (0)
  57. ' 返回 (位异或 (X, Y, Z))

  58. .子程序 MD5_I, 整数型, , I(X,Y,Z) = (Y^(X|~Z))
  59. .参数 X, 整数型
  60. .参数 Y, 整数型
  61. .参数 Z, 整数型

  62. 置入代码 ({ 139, 69, 16, 247, 208, 11, 69, 8, 51, 69, 12, 201, 194, 12, 0 })
  63. ' mov eax,[ebp+16]
  64. ' not eax
  65. ' or eax,[ebp+8]
  66. ' xor eax,[ebp+12]
  67. ' leave
  68. ' retn 12
  69. 返回 (0)
  70. ' 返回 (位异或 (Y, 位或 (X, 位取反 (Z))))

复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-19 23:30 , Processed in 0.482027 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表