baitang36 发表于 2024-12-9 14:33:44

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

本帖最后由 baitang36 于 2024-12-9 15:16 编辑

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

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

(defun syz-make-num-string (int1);make a string from a number
    (vl-list->string
      (LIST (rem int1 256)
      (rem (/ int1 256) 256)
      (rem (/ (/ int1 256) 256) 256)
      (rem (/ (/ (/ int1 256) 256) 256) 256)
      )
    )
)
(vl-load-com)
(load "c:/00/trf_9.fas")
    (tranf "make-string")
(load "c:/00/syz-api32.fas")
(setq
    handle (syz-api32 "user32" "FindWindowA" 0 "植物大战僵尸中文版")
)
(setq kpid (make-string 8 0))
(syz-api32 "user32" "GetWindowThreadProcessId" handle kpid)
(setq pid (syz-numget kpid 0))
(setq pdl (syz-api32 "kernel32" "OpenProcess" 2035711 0 pid))
(setq k1 (make-string 8 0))
(syz-api32 "kernel32""ReadProcessMemory" pdl6987456k1 4 0)
(setq d1 (syz-NumGet k1 0))
(setq k2 (make-string 8 0))
(syz-api32 "kernel32"
       "ReadProcessMemory"
       pdl
       (+ d1 1896)
       k2
       4
       0
)
(setq d2 (syz-NumGet k2 0))
(setq k4 (syz-make-num-string 7000))
(syz-api32 "kernel32"
       "WriteProcessMemory"
       pdl
       (+ d2 21856)
       k4
       4
       0
)
(princ)
)

;|(vl-load-com) ;致敬YXP大侠源码 2024-12-9http://bbs.mjtd.com/thread-191701-1-1.html
(defun c:plants (/ k)   
(setq DWX (vlax-create-object "DynamicWrapperX"))
(vlax-invoke DWX 'Register "user32" "FindWindowExW" "i=hhhw" "r=m")
(vlax-invoke DWX 'Register "user32" "GetWindowThreadProcessId" "i=hl" "r=l")
(vlax-invoke DWX 'Register "kernel32" "OpenProcess" "i=qbq" "r=p")
(vlax-invoke DWX 'Register "kernel32" "ReadProcessMemory" "i=hpllb" "r=l")
(vlax-invoke DWX 'Register "kernel32" "WriteProcessMemory" "i=hpllb" "r=l")
(setq handle (vlax-invoke DWX 'FindWindowExW 0 0 0 "植物大战僵尸中文版"))
(setq kpid (vlax-invoke dwx 'MemAlloc 4 1))
(setq process (vlax-invoke DWX 'GetWindowThreadProcessId handle kpid))
(setq pid (vlax-invoke DWX 'NumGet kpid 0 "l"))
(setq pdl (vlax-invoke DWX 'OpenProcess 2035711 0 pid))
(setq k1 (vlax-invoke dwx 'MemAlloc 4 1))
(vlax-invoke DWX 'ReadProcessMemory pdl 6987456 k1 4 0)
(setq d1 (vlax-invoke DWX 'NumGet k1 0 "l"))
(setq k2 (vlax-invoke dwx 'MemAlloc 4 1))
(vlax-invoke DWX 'ReadProcessMemory pdl (+ d1 1896) k2 4 0)
(setq d2 (vlax-invoke DWX 'NumGet k2 0 "l"))
(setq k4 (vlax-invoke dwx 'MemAlloc 4 1))
(vlax-invoke dwx 'NumPut 90000 k4 0)
(vlax-invoke DWX 'WriteProcessMemory pdl (+ d2 21856) k4 4 0)
(princ)
)
|;






Bao_lai 发表于 2024-12-10 10:00:05

VBALISPER 发表于 2024-12-10 08:23
在C盘新建了一个文件夹00,把两个FAS文件放进去。CAD中也加载了上面的代码。管理员运行CAD,仍然是
命令:...
不是,你开了僵尸游戏么?

[*](setq

[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif    handle (syz-api32 "user32" "FindWindowA" 0 "植物大战僵尸中文版")

[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)


baitang36 发表于 2024-12-11 14:19:45

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

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

null. 发表于 2024-12-11 14:06:32

本帖最后由 null. 于 2024-12-11 14:07 编辑

baitang36 发表于 2024-12-11 09:43
你确定是用的这个吗?重新下载试试?你用的哪个版本的cad,高版本确认一下lispsys=0
auto2022,lspsys=1.加载时就不认。改lspsys=0,不可能,我的菜单变为乱码的。重新下,也没有用。可能是lsp被加密后引起的。

自贡黄明儒 发表于 2024-12-9 14:38:15

好东西,可惜bricscad不支持fas,不好玩了。

p-3-ianlcc 发表于 2024-12-9 15:09:34

这是很棒的东西,值得收藏研究
谢谢哥的分享!

baitang36 发表于 2024-12-9 15:13:33

p-3-ianlcc 发表于 2024-12-9 15:09
这是很棒的东西,值得收藏研究
谢谢哥的分享!

请重新下载syz-api.fas,第一个版本上传的有错

p-3-ianlcc 发表于 2024-12-9 15:15:06

baitang36 发表于 2024-12-9 15:13
请重新下载syz-api.fas,第一个版本上传的有错

好的,重新再下载来
谢谢哥

langjs 发表于 2024-12-9 15:38:53

运行命令是啥?

tryhi 发表于 2024-12-9 16:21:35

不是,玩得这么花,用CAD开发内存挂?

magicheno 发表于 2024-12-9 17:02:08

太高级了,看不懂

Bao_lai 发表于 2024-12-9 17:48:59

这个只是实现了dwx僵尸模块里的几个api还是其他也能呀,如果都还原了,那就好玩了。

你有种再说一遍 发表于 2024-12-9 21:26:10

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

去学逆向吧,入门第一节课就是植物大战僵尸
页: [1] 2 3
查看完整版本: 学习yxp大侠的《植物大战僵尸阳光值修改》 调用保留函数,去掉dwx