明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1073|回复: 32

[源码] 学习yxp大侠的《植物大战僵尸阳光值修改》 调用保留函数,去掉dwx

[复制链接]
发表于 2024-12-9 14:33:44 | 显示全部楼层 |阅读模式
本帖最后由 baitang36 于 2024-12-9 15:16 编辑

看了yxp大侠的《植物大战僵尸阳光值修改》觉得有趣,改一下,去掉里面的dwx调用,改为直接用保留函数实现,这样就不用注册dwx了。
在acad2008和2018下试验通过。32位cad不需要管理员权限运行,64位需要。
在此感谢yxp大侠提供源码。

  1. (defun c:plants  (/ k)      ;use syz-api32
  2.   (DEFUN syz-numget (str1 index1 / tmp1 tmp2)
  3.           ;get a number from a string
  4.     (setq tmp1 (vl-string->list str1))
  5.     (setq byte0 (nth index1 tmp1))
  6.     (setq byte1 (nth (+ index1 1) tmp1))
  7.     (setq byte2 (nth (+ index1 2) tmp1))
  8.     (setq byte3 (nth (+ index1 3) tmp1))
  9.     (setq
  10.       num (+ byte0 (* 256 byte1) (* 65536 byte2) (* 65536 256 byte3))
  11.     )
  12.   )

  13.   (defun syz-make-num-string (int1)  ;make a string from a number
  14.     (vl-list->string
  15.       (LIST (rem int1 256)
  16.       (rem (/ int1 256) 256)
  17.       (rem (/ (/ int1 256) 256) 256)
  18.       (rem (/ (/ (/ int1 256) 256) 256) 256)
  19.       )
  20.     )
  21.   )
  22.   (vl-load-com)
  23.   (load "c:/00/trf_9.fas")
  24.     (tranf "make-string")
  25.   (load "c:/00/syz-api32.fas")
  26.   (setq
  27.     handle (syz-api32 "user32" "FindWindowA" 0 "植物大战僵尸中文版")
  28.   )
  29.   (setq kpid (make-string 8 0))
  30.   (syz-api32 "user32" "GetWindowThreadProcessId" handle kpid)
  31.   (setq pid (syz-numget kpid 0))
  32.   (setq pdl (syz-api32 "kernel32" "OpenProcess" 2035711 0 pid))
  33.   (setq k1 (make-string 8 0))
  34.   (syz-api32 "kernel32"  "ReadProcessMemory" pdl  6987456  k1 4 0)
  35.   (setq d1 (syz-NumGet k1 0))
  36.   (setq k2 (make-string 8 0))
  37.   (syz-api32 "kernel32"
  38.        "ReadProcessMemory"
  39.        pdl
  40.        (+ d1 1896)
  41.        k2
  42.        4
  43.        0
  44.   )
  45.   (setq d2 (syz-NumGet k2 0))
  46.   (setq k4 (syz-make-num-string 7000))
  47.   (syz-api32 "kernel32"
  48.        "WriteProcessMemory"
  49.        pdl
  50.        (+ d2 21856)
  51.        k4
  52.        4
  53.        0
  54.   )
  55.   (princ)
  56. )

  57. ;|(vl-load-com) ;致敬YXP大侠源码 2024-12-9  http://bbs.mjtd.com/thread-191701-1-1.html
  58. (defun c:plants (/ k)   
  59.   (setq DWX (vlax-create-object "DynamicWrapperX"))
  60.   (vlax-invoke DWX 'Register "user32" "FindWindowExW" "i=hhhw" "r=m")
  61.   (vlax-invoke DWX 'Register "user32" "GetWindowThreadProcessId" "i=hl" "r=l")
  62.   (vlax-invoke DWX 'Register "kernel32" "OpenProcess" "i=qbq" "r=p")
  63.   (vlax-invoke DWX 'Register "kernel32" "ReadProcessMemory" "i=hpllb" "r=l")
  64.   (vlax-invoke DWX 'Register "kernel32" "WriteProcessMemory" "i=hpllb" "r=l")
  65.   (setq handle (vlax-invoke DWX 'FindWindowExW 0 0 0 "植物大战僵尸中文版"))
  66.   (setq kpid (vlax-invoke dwx 'MemAlloc 4 1))
  67.   (setq process (vlax-invoke DWX 'GetWindowThreadProcessId handle kpid))
  68.   (setq pid (vlax-invoke DWX 'NumGet kpid 0 "l"))
  69.   (setq pdl (vlax-invoke DWX 'OpenProcess 2035711 0 pid))
  70.   (setq k1 (vlax-invoke dwx 'MemAlloc 4 1))
  71.   (vlax-invoke DWX 'ReadProcessMemory pdl 6987456 k1 4 0)
  72.   (setq d1 (vlax-invoke DWX 'NumGet k1 0 "l"))
  73.   (setq k2 (vlax-invoke dwx 'MemAlloc 4 1))
  74.   (vlax-invoke DWX 'ReadProcessMemory pdl (+ d1 1896) k2 4 0)
  75.   (setq d2 (vlax-invoke DWX 'NumGet k2 0 "l"))
  76.   (setq k4 (vlax-invoke dwx 'MemAlloc 4 1))
  77.   (vlax-invoke dwx 'NumPut 90000 k4 0)
  78.   (vlax-invoke DWX 'WriteProcessMemory pdl (+ d2 21856) k4 4 0)
  79.   (princ)
  80. )
  81. |;







本帖子中包含更多资源

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

x

评分

参与人数 3明经币 +3 金钱 +18 收起 理由
highflybird + 1 + 18 赞一个!
dtucad + 1 赞一个!
yxp + 1 厉害了,老伙计,看来可以抛弃DWX这根拐棍.

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 2024-12-10 10:00:05 | 显示全部楼层
VBALISPER 发表于 2024-12-10 08:23
在C盘新建了一个文件夹00,把两个FAS文件放进去。CAD中也加载了上面的代码。管理员运行CAD,仍然是
命令:  ...

不是,你开了僵尸游戏么?
  • (setq
  •     handle (syz-api32 "user32" "FindWindowA" 0 "植物大战僵尸中文版")
  •   )


点评

开了。难道是版本不对。但窗口确实是显示植物大战僵尸中文版  发表于 2024-12-10 15:40
回复 支持 反对

使用道具 举报

发表于 2024-12-11 13:58:08 | 显示全部楼层
VBALISPER 发表于 2024-12-10 08:23
在C盘新建了一个文件夹00,把两个FAS文件放进去。CAD中也加载了上面的代码。管理员运行CAD,仍然是
命令:  ...

那几个调用的 windows api 函数级别比较高,需要管理员身份,因此 AutoCAD 需要以管理员身份运行。

点评

说明了是管理员身份运行的。  发表于 2024-12-12 08:45
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-11 14:19:45 | 显示全部楼层
null. 发表于 2024-12-11 14:06
auto2022,lspsys=1.加载时就不认。改lspsys=0,不可能,我的菜单变为乱码的。重新下,也没有用。可能是lsp ...

你可以临时改成lispsys=0试验一下,确定下是不是这个原因造成的。如确定,我以后改syz-api32,让它适应新版cad
回复 支持 反对

使用道具 举报

发表于 2024-12-9 14:38:15 | 显示全部楼层
好东西,可惜bricscad不支持fas,不好玩了。
回复 支持 反对

使用道具 举报

发表于 2024-12-9 15:09:34 | 显示全部楼层
这是很棒的东西,值得收藏研究
谢谢哥的分享!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-9 15:13:33 | 显示全部楼层
p-3-ianlcc 发表于 2024-12-9 15:09
这是很棒的东西,值得收藏研究
谢谢哥的分享!

请重新下载syz-api.fas,第一个版本上传的有错
回复 支持 反对

使用道具 举报

发表于 2024-12-9 15:15:06 | 显示全部楼层
baitang36 发表于 2024-12-9 15:13
请重新下载syz-api.fas,第一个版本上传的有错

好的,重新再下载来
谢谢哥
回复 支持 反对

使用道具 举报

发表于 2024-12-9 15:38:53 | 显示全部楼层
运行命令是啥?

点评

plants  发表于 2024-12-9 16:31
回复 支持 反对

使用道具 举报

发表于 2024-12-9 16:21:35 | 显示全部楼层
不是,玩得这么花,用CAD开发内存挂?
回复 支持 反对

使用道具 举报

发表于 2024-12-9 17:02:08 | 显示全部楼层
太高级了,看不懂
回复 支持 反对

使用道具 举报

发表于 2024-12-9 17:48:59 来自手机 | 显示全部楼层
这个只是实现了dwx僵尸模块里的几个api还是其他也能呀,如果都还原了,那就好玩了。
回复 支持 反对

使用道具 举报

发表于 2024-12-9 21:26:10 | 显示全部楼层
Bao_lai 发表于 2024-12-9 17:48
这个只是实现了dwx僵尸模块里的几个api还是其他也能呀,如果都还原了,那就好玩了。

去学逆向吧,入门第一节课就是植物大战僵尸
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-25 02:51 , Processed in 0.179029 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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