首页
社区
课程
招聘
[旧帖] 怎样编写汇编? 0.00雪花
发表于: 2009-11-29 21:43 3788

[旧帖] 怎样编写汇编? 0.00雪花

2009-11-29 21:43
3788
最近玩<Torchlight>火炬之光这个单机游戏,难度太高,现修改如下:
由于主角,宠物和怪及NPC地址是共用的,即一改全无敌,要不全挂.
现找到主角基址为00DA1D2C,一级是1C,二级是394,我用CE写
[ENABLE]
0049f4c4:               //共用地址
jmp 00A07FC1        //改跳成自己的地址
nop
00A07FC1:
cmp ebp,17e99cb8 //这个是比较是不是主角的地址,不能有中括号,有中括号比较无效
                    //17E99CB8是动态地址,即00DA1D2C+1C得来
je 00A07FD8           //是主角的地址就跳
fld dword ptr [ebp+00000394]  //不是
jmp 0049f4ca          //返回
00A07FD8:
fld dword ptr [ebp+00000394]       //是不是主角的地址
mov dword ptr [ebp+00000394],459c4000   //是主角的地址的话给主角加血5000
jmp 0049f4ca           //返回 

[DISABLE]
0049f4c4:
fld dword ptr [ebp+00000394]

-----------------------------------------------------------------

现在问题来了.我每次打开玩都要把17E99CB8改它的一级地址, 00DA1D2C+1C从这得来,
把17e99cb8改成一级地址才能生效,很麻烦
该怎么写汇编,自动查找这一级地址,不用手动改

在cmp ebp,17e99cb8 前面加什么或编写

谢谢了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
找一块空地方写上
push esi
mov esi,[00DA1D2C+1C]
cmp ebp,esi
push esi
jmp "je 00A07FD8 这句的地址"
je 00A07FD8
在cmp ebp,17e99cb8 前
2009-11-29 23:29
0
雪    币: 149
活跃值: (1186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
回2楼的,用你的方法行不通.游戏直接关闭
我查了一下
mov esi,[00DA1D2C+1C]  //这句不对,[00DA1D2C+1C]写到内存里就是00DA1D48,直
                           //接加起来了.它应该是基址00DA1D2C+一级指针1C得到的地址
push esi                           //又压ESI,这句不明白
jmp "je 00A07FD8 这句的地址"   //直跳?不判断了?
je 00A07FD8 在cmp ebp,17e99cb8 前  //是不是在cmp ebp,esi这句前面

希望能说明白点.谢了
2009-11-29 23:57
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感觉都很高深,
2009-11-30 01:22
0
雪    币: 149
活跃值: (1186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
帮的人太少,到头还是自己解决~~
2009-11-30 01:49
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
地址可能没找全
2009-11-30 03:53
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mov esi,[00DA1D2C+1C] 取;00DA1D2C+1C里的值

push esi   ;要先保存先前的值
cmp ebp,esi ;代替原先的cmp ebp,17e99cb8
jmp "je 00A07FD8这地址 ;比较后跳回原来的地方
2009-11-30 07:27
0
雪    币: 149
活跃值: (1186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
经过自己努力,去网上找.然后无数次失败,终于搞定了.
应该是这样写:

[ENABLE]
0049f4c4:
jmp 00A07F01
nop
00A07F01:
push eax                               //保存原EAX值
mov eax,[00da1d2c]              //把基址00DA1D2C放到EAX
mov eax,[eax+1c]                  //再把一级指针1C放到EAX
cmp ebp,eax                          //比较是不是主角的地址
je 00A07FD8                          //是就跳
pop eax                                 //不跳释放原EAX值
fld dword ptr [ebp+00000394] //继续原操作
jmp 0049f4ca
00A07FD8:                                  //主角地址
pop eax                                      //先释放原EAX值
fld dword ptr [ebp+00000394]        
mov dword ptr [ebp+00000394],48435000  //给主角加满血
jmp 0049f4ca                             //返回

[DISABLE]
0049f4c4:
fld dword ptr [ebp+00000394]

这样怪怎么打都打不死你了.真正的无敌了.

关于2楼的.虽没帮上什么忙,但也给点KX作为热心帮助吧

-----------------------------------

KX要全给才能解决,少了也不能解决..郁闷
2009-11-30 13:11
0
游客
登录 | 注册 方可回帖
返回
//