开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5444|回复: 23
收起左侧

[闲聊] 易语言置入代码, 谁碰到这种情况

[复制链接]
结帖率:100% (32/32)
发表于 2019-3-9 10:49:27 | 显示全部楼层 |阅读模式   湖北省武汉市
本帖最后由 萌菌团 于 2019-3-9 10:58 编辑
  
数据类型名公开备 注
myLogType 
成员名类 型传址数组备 注
code整数型 类型代码
typeStr文本型 类型文本
strColor整数型 文本颜色
bgColor整数型 背景颜色

子程序名返回值类型公开备 注
getMyLogType逻辑型 获取自定义类型
参数名类 型参考可空数组备 注
typeCode整数型
myLogTypemyLogType
变量名类 型静态数组备 注
i整数型 
计次循环首 (取数组成员数 (myLogTypes), i)
如果真 (myLogTypes .code = typeCode)
myLogType = myLogTypes
返回 ()

计次循环尾 ()
返回 ()
子程序名返回值类型公开备 注
getTypeColor整数型 获取事件类型文本颜色
参数名类 型参考可空数组备 注
typeCode整数型
BgColor逻辑型
变量名类 型静态数组备 注
tmp整数型存放call地址和call返回值
myLogTypemyLogType 
判断 (typeCode ≤ -1000)  ' 如果是自定义类型范围
判断 (getMyLogType (typeCode, myLogType))
tmp = 选择 (BgColor, myLogType.bgColor, myLogType.strColor)
tmp = -1

tmp = call_getTypeColor
' push dword ptr [ebp+0Ch]
' push dword ptr [ebp+08h]
' call dword ptr [ebp-04h]
' mov dword ptr [ebp-04h],eax
置入代码 ({ 255, 117, 12, 255, 117, 8, 255, 85, 252, 137, 69, 252 })
返回 (tmp)



getTypeColor方法对应汇编代码
  1. 17622488    55              push ebp
  2. 17622489    8BEC            mov ebp,esp
  3. 1762248B    81EC 14000000   sub esp,0x14
  4. 17622491    68 10000000     push 0x10
  5. 17622496    E8 240B0000     call 演示测试.17622FBF
  6. 1762249B    83C4 04         add esp,0x4
  7. 1762249E    8945 FC         mov dword ptr ss:[ebp-0x4],eax
  8. 176224A1    8BD8            mov ebx,eax
  9. 176224A3    C703 00000000   mov dword ptr ds:[ebx],0x0
  10. 176224A9    C743 04 0000000>mov dword ptr ds:[ebx+0x4],0x0
  11. 176224B0    C743 08 0000000>mov dword ptr ds:[ebx+0x8],0x0
  12. 176224B7    C743 0C 0000000>mov dword ptr ds:[ebx+0xC],0x0
  13. 176224BE    C745 F8 0000000>mov dword ptr ss:[ebp-0x8],0x0
  14. 176224C5    817D 08 18F*FF>cmp dword ptr ss:[ebp+0x8],-0x3E8        ; 判断typeCode小于等于-1000
  15. 176224CC    0F8F 53000000   jg 演示测试.17622525
  16. 176224D2    8D45 FC         lea eax,dword ptr ss:[ebp-0x4]
  17. 176224D5    50              push eax
  18. 176224D6    FF75 08         push dword ptr ss:[ebp+0x8]
  19. 176224D9    E8 6AFEFFFF     call 演示测试.17622348
  20. 176224DE    85C0            test eax,eax
  21. 176224E0    0F84 33000000   je 演示测试.17622519
  22. 176224E6    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
  23. 176224E9    83C3 0C         add ebx,0xC
  24. 176224EC    895D F4         mov dword ptr ss:[ebp-0xC],ebx
  25. 176224EF    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
  26. 176224F2    83C3 08         add ebx,0x8
  27. 176224F5    895D F0         mov dword ptr ss:[ebp-0x10],ebx
  28. 176224F8    837D 0C 00      cmp dword ptr ss:[ebp+0xC],0x0
  29. 176224FC    0F84 0A000000   je 演示测试.1762250C
  30. 17622502    8B5D F4         mov ebx,dword ptr ss:[ebp-0xC]
  31. 17622505    8B03            mov eax,dword ptr ds:[ebx]
  32. 17622507    E9 05000000     jmp 演示测试.17622511
  33. 1762250C    8B5D F0         mov ebx,dword ptr ss:[ebp-0x10]
  34. 1762250F    8B03            mov eax,dword ptr ds:[ebx]
  35. 17622511    8945 F8         mov dword ptr ss:[ebp-0x8],eax
  36. 17622514    E9 07000000     jmp 演示测试.17622520
  37. 17622519    C745 F8 FFFFFFF>mov dword ptr ss:[ebp-0x8],-0x1
  38. 17622520    E9 14000000     jmp 演示测试.17622539
  39. 17622525    A1 FC806E17     mov eax,dword ptr ds:[0x176E80FC]        ;大于-1000 , 将全局变量赋值给局部变量
  40. 1762252A    8945 F8         mov dword ptr ss:[ebp-0x8],eax           ; 赋值这里出现异常, 变量在源码中处于第一位,那么这里应该是ebp-0x4,但实际却是ebp-0x8
  41. 1762252D    FF75 0C         push dword ptr ss:[ebp+0xC]
  42. 17622530    FF75 08         push dword ptr ss:[ebp+0x8]
  43. 17622533    FF55 FC         call dword ptr ss:[ebp-0x4]              ; 因为变量顺序出现异常导致call异常
  44. 17622536    8945 FC         mov dword ptr ss:[ebp-0x4],eax
  45. 17622539    8B45 F8         mov eax,dword ptr ss:[ebp-0x8]
  46. 1762253C    E9 00000000     jmp 演示测试.17622541
  47. 17622541    50              push eax
  48. 17622542    8B5D FC         mov ebx,dword ptr ss:[ebp-0x4]
  49. 17622545    53              push ebx
  50. 17622546    83C3 04         add ebx,0x4
  51. 17622549    53              push ebx
  52. 1762254A    8B1B            mov ebx,dword ptr ds:[ebx]
  53. 1762254C    85DB            test ebx,ebx
  54. 1762254E    74 09           je short 演示测试.17622559
  55. 17622550    53              push ebx
  56. 17622551    E8 630A0000     call 演示测试.17622FB9
  57. 17622556    83C4 04         add esp,0x4
  58. 17622559    5B              pop ebx
  59. 1762255A    E8 5A0A0000     call 演示测试.17622FB9
  60. 1762255F    83C4 04         add esp,0x4
  61. 17622562    58              pop eax
  62. 17622563    8BE5            mov esp,ebp
  63. 17622565    5D              pop ebp
  64. 17622566    C2 0800         retn 0x8

复制代码


点评

这源码有毒,草-泥-马,害的老子易语言现在的变量 变成 调用顺序排序了妈的   广东省中山市  发表于 2019-3-9 13:29

签到天数: 2 天

发表于 2023-10-10 13:35:33 | 显示全部楼层   福建省莆田市
看不懂也得点个赞
回复 支持 反对

使用道具 举报

发表于 2022-5-23 16:23:37 | 显示全部楼层   湖南省岳阳市
置入代码,是个头疼的事
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2021-7-8 21:47:55 | 显示全部楼层   广东省东莞市
看看
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 2 天

发表于 2021-5-4 15:39:46 | 显示全部楼层   香港特别行政区*
难受!拿了币就走!
回复 支持 反对

使用道具 举报

结帖率:100% (32/32)
 楼主| 发表于 2019-3-9 13:48:27 | 显示全部楼层   湖北省武汉市
本帖最后由 萌菌团 于 2019-3-9 13:51 编辑

@haishifu 你不要到处喷好吗,骂谁呢?
回复 支持 反对

使用道具 举报

结帖率:100% (32/32)
 楼主| 发表于 2019-3-9 12:56:50 | 显示全部楼层   湖北省武汉市
汉族 发表于 2019-3-9 12:43
我记得 参数不是 *04开始吗?  4字节一怼  ,这个要看寄存器才知道 自己好好分析吧,我对这玩意儿 以前只是 ...

对是 就是从ebp-0x4开始, 我那个变量明明是在第一位 但编译出来后变成ebp-0x8了

点评

上面的代码就是od检查出来的, 编译出来的二进制代码就是如此。 只是想知道为什么会出现这种现象   湖北省武汉市  发表于 2019-3-9 13:56
慢慢分析吧~用IDA32看看 寄存器 或者 OD 看看情况   广东省东莞市  发表于 2019-3-9 13:05
然后我后面的置入代码就炸了   湖北省武汉市  发表于 2019-3-9 12:57
回复 支持 反对

使用道具 举报

结帖率:87% (20/23)

签到天数: 7 天

发表于 2019-3-9 12:43:18 | 显示全部楼层   广东省东莞市
我记得 参数不是 *04开始吗?  4字节一怼  ,这个要看寄存器才知道 自己好好分析吧,我对这玩意儿 以前只是研究过一点 call 执行而已
回复 支持 反对

使用道具 举报

发表于 2019-3-9 11:29:07 | 显示全部楼层   湖南省湘潭市
拿个币就走
回复 支持 反对

使用道具 举报

结帖率:61% (19/31)

签到天数: 6 天

发表于 2019-3-9 11:09:47 | 显示全部楼层   江苏省盐城市
看不懂真心好烦恼哎
回复 支持 反对

使用道具 举报

结帖率:100% (32/32)
 楼主| 发表于 2019-3-9 10:56:59 | 显示全部楼层   湖北省武汉市

看的懂的自然就懂了
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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