社区应用 社区服务 会员列表 统计排行 帮助 银行
  • 13446阅读
  • 220回复

[开源][易语言源码] 开启E语言的64位模式。[!!27日追加重要说明]

楼层直达
发帖
79
铜币
1
威望
0
E积分
0
技术积分
0
只看该作者 40楼 发表于: 2016-12-27
大牛,学习中。支持一下
发帖
520
铜币
732
威望
0
E积分
0
技术积分
0
只看该作者 41楼 发表于: 2016-12-27
优秀文章,支持!n神马都是浮云
发帖
140
铜币
3340
威望
0
E积分
1
技术积分
0
只看该作者 42楼 发表于: 2016-12-27
回 30楼(先锋小七) 的帖子
两个问题。
一是。有一个参数不仔细,。
二是。调用参数错了。倒数第2个参数和VirtualAlloc一样的。是提交类型。
改过的源在下面



  1. .版本 2
  2. .子程序 ReadProcessMemory64, 整数型, 公开, 返回实际读出字节数 返回0失败
  3. .参数 hProcess, 整数型, , 进程句柄
  4. .参数 lpRead, 长整数型, , 目标地址
  5. .参数 lpOut, 整数型, , 存放读出内容的缓冲指针
  6. .参数 nSize, 整数型, , 读取长度
  7. .局部变量 pfn, 长整数型, 静态, , NtReadVirtualMemory 在64位ntdll中的地址
  8. .局部变量 outlen, 长整数型
  9. ' 这个只是做一个示范..其他参考bbs.eyuyan.com/read.php?tid=397797
  10. .如果真 (pfn = 0)
  11.     pfn = GetProcAddress64 (GetNtdll64 (), “NtReadVirtualMemory”)
  12. .如果真结束
  13. X64Call_5 (pfn, 5, hProcess, lpRead, lpOut, nSize, Get_Ptr_Eint64 (outlen))  ' 整数到长整数变量.易语言自己会扩展开
  14. 返回 (outlen)  ' 易语言自己会截断成整数型
  15. .子程序 WriteVirtualMemory64, 整数型, 公开, 返回实际写入字节数 返回0失败
  16. .参数 hProcess, 整数型, , 进程句柄
  17. .参数 lpWrite, 长整数型, , 目标地址
  18. .参数 lpBuffer, 整数型, , 存放读入内容的缓冲指针
  19. .参数 nSize, 整数型, , 读取长度
  20. .局部变量 pfn, 长整数型, 静态, , NtWriteVirtualMemory 在64位ntdll中的地址
  21. .局部变量 inlen, 长整数型
  22. .如果真 (pfn = 0)
  23.     pfn = GetProcAddress64 (GetNtdll64 (), “NtWriteVirtualMemory”)
  24. .如果真结束
  25. X64Call_5 (pfn, 5, hProcess, lpWrite, lpBuffer, nSize, Get_Ptr_Eint64 (inlen))
  26. 返回 (inlen)
  27. .子程序 VirtualAllocEx64, 长整数型, 公开, 返回申请到的地址 返回0失败
  28. .参数 hProcess, 整数型, , 进程句柄
  29. .参数 lpAddress, 长整数型, , 期望内存基址指针
  30. .参数 dwSize, 整数型, , 期望大小
  31. .参数 flAllocationType, 整数型, , 分配类型
  32. .参数 flProtect, 整数型, , 保护属性
  33. .局部变量 pfn, 长整数型, 静态, , NtAllocateVirtualMemory 在64位ntdll中的地址
  34. .局部变量 dw64ret, 长整数型
  35. .局部变量 tmpAddr, 长整数型
  36. .局部变量 tmpSize, 长整数型
  37. .如果真 (pfn = 0)
  38.     pfn = GetProcAddress64 (GetNtdll64 (), “NtAllocateVirtualMemory”)
  39. .如果真结束
  40. tmpAddr = lpAddress
  41. tmpSize = dwSize
  42. dw64ret = X64Call_6 (pfn, 6, hProcess, Get_Ptr_Eint64 (tmpAddr), 0, Get_Ptr_Eint64 (tmpSize), flAllocationType, flProtect)
  43. .如果真 (dw64ret = #NOERROR)
  44.     返回 (tmpAddr)
  45. .如果真结束
  46. 返回 (0)
  47. .版本 2
  48. .支持库 spec
  49. .子程序 测试程序
  50. .局部变量 测试hex, 字节集
  51. .局部变量 测试hex长度
  52. .局部变量 读取缓冲, 字节集
  53. .局部变量 addr, 长整数型
  54. .局部变量 nRet
  55. 调试输出 (取长整数十六进制文本 (GetNtdll64 ()))
  56. 调试输出 (取长整数十六进制文本 (GetProcAddress64 (GetNtdll64 (), “RtlCreateUserThread”)))
  57. ' 仅测试一下封装有效  '其他的自己模仿着做
  58. 测试hex = { 1, 2, 3, 4, 5, 6, 7, 8 }
  59. 测试hex长度 = 取字节集长度 (测试hex)
  60. 读取缓冲 = 取空白字节集 (测试hex长度)
  61. addr = VirtualAllocEx64 (-1, 0, 测试hex长度, 4096, 64)
  62. ' 第2个参数 NULL 不指定地址.如果制定了要确认地址没被分配走
  63. ' MEM_COMMIT 0x1000 4096
  64. ' MEM_RESERVE 0x2000 8192
  65. 调试输出 (取长整数十六进制文本 (addr))
  66. nRet = WriteVirtualMemory64 (-1, addr, Get_Ptr_Ehex (测试hex), 测试hex长度)
  67. 调试输出 (nRet)
  68. ReadProcessMemory64 (-1, addr, Get_Ptr_Ehex (读取缓冲), 测试hex长度)
  69. 调试输出 (读取缓冲)
  70. 暂停 ()




发帖
3022
铜币
950
威望
0
E积分
100
技术积分
0
只看该作者 43楼 发表于: 2016-12-27
感谢楼主开源,绝对顶你!
级别: 幼儿园
发帖
14
铜币
871
威望
0
E积分
0
技术积分
0
只看该作者 44楼 发表于: 2016-12-27
优秀文章,支持!       
发帖
392
铜币
817
威望
0
E积分
0
技术积分
0
只看该作者 45楼 发表于: 2016-12-27
X64模式急需开启,感谢开源。
级别: 幼儿园
发帖
14
铜币
871
威望
0
E积分
0
技术积分
0
只看该作者 46楼 发表于: 2016-12-27
感谢分享!!!!!
级别: 托儿所
发帖
4
铜币
53
威望
0
E积分
0
技术积分
0
只看该作者 47楼 发表于: 2016-12-27
                    
发帖
837
铜币
6655
威望
0
E积分
24
技术积分
0
只看该作者 48楼 发表于: 2016-12-27
回 楼主(thenight) 的帖子
全部修复完善。测试无错。
e_X64CALL_完善-0.e (40 K) 下载次数:195
[ 此帖被ccinio在2016-12-28 02:27重新编辑 ]
本帖最近评分记录: 2 条评分 铜币 +2
qq040404 铜币 +1 2016-12-30 对啊 鲁HOOK啊
先锋小七 铜币 +1 2016-12-28 撸个hook模块玩玩啊
发帖
171
铜币
0
威望
0
E积分
0
技术积分
0
只看该作者 49楼 发表于: 2016-12-28
DDDDDDDDDDDDDDDDDDD
快速回复

限60 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
认证码:
上一个 下一个