免扫码快速登录设为首页收藏本站帮助中心
查看: 191|回复: 1
收起左侧

易语言MASM置入代码字节集数据的URL编码解码PHP的urlencode()函数算法2.0(返回文本型)

[复制链接]
发表于 2019-9-15 08:00:03 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有帐号?加入我们

x

  1. .版本 2

  2. .程序集 程序集1

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


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

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

  7. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  8. 输出调试文本 (URL编码 (到字节集 (“Hello World!中文测试+-_.?1234567890~!@#$%^&*()_+-={}[]:|;'\<>?测试文字”)))


  9. .子程序 URL编码, 文本型, 公开, 与PHP的 urlencode() 函数功能相同
  10. .参数 数据, 字节集
  11. .参数 大写, 逻辑型, 可空
  12. .局部变量 文本长度, 整数型
  13. .局部变量 返回值, 文本型

  14. 文本长度 = 0
  15. 置入代码 ({ 80, 139, 69, 8, 139, 0, 139, 64, 4, 107, 192, 3, 137, 69, 252, 88 })
  16. ' push eax
  17. ' mov eax,[ebp+8]
  18. ' mov eax,[eax]
  19. ' mov eax,[eax+4]
  20. ' imul eax,3
  21. ' mov [ebp-4],eax
  22. ' pop eax
  23. 返回值 = 取空白文本 (文本长度)
  24. 置入代码 ({ 235, 31, 128, 227, 15, 128, 251, 0, 114, 10, 128, 251, 9, 119, 5, 128, 195, 48, 235, 12, 10, 246, 116, 5, 128, 195, 55, 235, 3, 128, 195, 87, 195, 80, 83, 81, 82, 86, 87, 139, 117, 8, 138, 117, 12, 128, 230, 1, 139, 54, 139, 126, 4, 131, 198, 8, 51, 201, 139, 69, 248, 235, 117, 138, 28, 49, 50, 255, 128, 251, 32, 116, 15, 128, 251, 45, 116, 10, 128, 251, 46, 116, 5, 128, 251, 95, 117, 2, 235, 38, 128, 251, 48, 114, 7, 128, 251, 57, 119, 2, 235, 26, 128, 251, 65, 114, 7, 128, 251, 90, 119, 2, 235, 14, 128, 251, 97, 114, 7, 128, 251, 122, 119, 2, 235, 2, 183, 1, 10, 255, 116, 34, 178, 37, 136, 16, 138, 211, 138, 218, 192, 235, 4, 232, 110, 255, 255, 255, 136, 88, 1, 138, 218, 232, 100, 255, 255, 255, 136, 88, 2, 131, 192, 3, 235, 13, 138, 20, 49, 128, 250, 32, 117, 2, 178, 43, 136, 16, 64, 65, 59, 207, 114, 135, 50, 219, 136, 24, 95, 94, 90, 89, 91, 88 })
  25. ' jmp MAIN
  26. ' DEC2HEX:
  27. ' AND BL,0FH
  28. ' .if BL >=0 && BL <=9
  29. ' ADD BL,30H
  30. ' .else
  31. ' .if DH
  32. ' ADD BL,37H
  33. ' .elseif
  34. ' ADD BL,57H
  35. ' .endif
  36. ' .endif
  37. ' ret
  38. ' MAIN:
  39. ' push eax
  40. ' push ebx
  41. ' push ecx
  42. ' push edx
  43. ' push esi
  44. ' push edi
  45. ' mov esi,[ebp+8]
  46. ' mov dh,[ebp+12]
  47. ' and dh,1
  48. ' mov esi,[esi]
  49. ' mov edi,[esi+4]
  50. ' add esi,8
  51. ' xor ecx,ecx
  52. ' mov eax,[ebp-8]
  53. ' .while ecx < edi
  54. ' mov bl,[esi+ecx]
  55. ' xor bh,bh
  56. ' .if bl == 32 || bl == 45 || bl == 46 || bl == 95
  57. ' .elseif bl >= 48 && bl <= 57
  58. ' .elseif bl >= 65 && bl <= 90
  59. ' .elseif bl >= 97 && bl <= 122
  60. ' .else
  61. ' mov bh,1
  62. ' .endif
  63. ' .if bh
  64. ' mov dl,"%"
  65. ' mov [eax],dl
  66. ' mov dl,bl
  67. ' mov bl,dl
  68. ' shr bl,4
  69. ' call DEC2HEX
  70. ' mov [eax+1],bl
  71. ' mov bl,dl
  72. ' call DEC2HEX
  73. ' mov [eax+2],bl
  74. ' add eax,3
  75. ' .else
  76. ' mov dl,[esi+ecx]
  77. ' .if dl == 32
  78. ' mov dl,43
  79. ' .endif
  80. ' mov [eax],dl
  81. ' inc eax
  82. ' .endif
  83. ' inc ecx
  84. ' .endw
  85. ' xor bl,bl
  86. ' mov [eax],bl
  87. ' pop edi
  88. ' pop esi
  89. ' pop edx
  90. ' pop ecx
  91. ' pop ebx
  92. ' pop eax

  93. 返回 (返回值)


复制代码

相关帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则