标题: 各种兵种与宝物特效(不断更新中)
性别:男-离线 岱瀛
(deving)

长平侯
川峡东路经略使
监管使

Rank: 19Rank: 19Rank: 19Rank: 19
组别 经略使
级别 左将军
好贴 1
功绩 2293
帖子 1370
编号 55810
注册 2005-12-22
来自 人间
家族 慕容世家


发表于 2007-9-11 21:59 资料 个人空间 短消息 看全部作者


QUOTE:
原帖由 yanguodong 于 2007-9-11 18:11 发表
00406471   /E9 E65E0300                   jmp Ekd5.0043C35C(空白位置)
00406476   |90                            nop
00406477   |90                            nop
00406478   |90               ...

思路大概对了,但是改得并不是特别好。

这个是原来无反的代码,准确的讲,是无反判断是否有效的代码。
00406462  |> \6A 2C                PUSH 2C                                  ; /Arg1 = 0000002C
00406464  |.  8B4D F0              MOV ECX,DWORD PTR SS:[EBP-10]            ; |
00406467  |.  8B49 08              MOV ECX,DWORD PTR DS:[ECX+8]             ; |
0040646A  |.  E8 9A150000          CALL WaGan.00407A09                      ; \WaGan.00407A09
0040646F  |.  85C0                 TEST EAX,EAX
00406471  |.  74 09                JE SHORT WaGan.0040647C
00406473  |.  C745 F8 00000000     MOV DWORD PTR SS:[EBP-8],0
0040647A  |.  EB 33                JMP SHORT WaGan.004064AF
0040647C  |>  8B55 F0              MOV EDX,DWORD PTR SS:[EBP-10]


而这一整段才是真正意义的反击代码。
004064B5  |.  A1 042E4900          MOV EAX,DWORD PTR DS:[492E04]
004064BA  |.  83C0 01              ADD EAX,1
004064BD  |.  A3 042E4900          MOV DWORD PTR DS:[492E04],EAX
004064C2  |.  8B4D F0              MOV ECX,DWORD PTR SS:[EBP-10]
004064C5  |.  8A11                 MOV DL,BYTE PTR DS:[ECX]
004064C7  |.  52                   PUSH EDX                                 ; /Arg2
004064C8  |.  8B45 F0              MOV EAX,DWORD PTR SS:[EBP-10]            ; |
004064CB  |.  8A48 01              MOV CL,BYTE PTR DS:[EAX+1]               ; |
004064CE  |.  51                   PUSH ECX                                 ; |Arg1
004064CF  |.  E8 55F30200          CALL WaGan.00435829                      ; \WaGan.00435829
004064D4  |.  83C4 08              ADD ESP,8
004064D7  |.  8B55 F0              MOV EDX,DWORD PTR SS:[EBP-10]
004064DA  |.  8A02                 MOV AL,BYTE PTR DS:[EDX]
004064DC  |.  50                   PUSH EAX                                 ; /Arg2
004064DD  |.  8B4D F0              MOV ECX,DWORD PTR SS:[EBP-10]            ; |
004064E0  |.  8A51 01              MOV DL,BYTE PTR DS:[ECX+1]               ; |
004064E3  |.  52                   PUSH EDX                                 ; |Arg1
004064E4  |.  8B4D F0              MOV ECX,DWORD PTR SS:[EBP-10]            ; |
004064E7  |.  E8 05000000          CALL WaGan.004064F1                      ; \WaGan.004064F1




CALL WaGan.00407A09    这个,作用就是判断ecx武将他的身上是否有装备宝物属性具备 2C特征。

简单用剧本指令的形式讲,就是  无反装备测试。

但凡测试,就有true和false.   一般非0则为true,0则为false.

eax是没次call一个函数的返回值所在。  Test eax,eax 无非就是在判断eax是不是0值

JE SHORT WaGan.0040647C  看,零值跳转,代表假,说名不存在2C属性,所以执行反击代码。

如果非零,代表真,
MOV DWORD PTR SS:[EBP-8],0
JMP SHORT WaGan.004064AF

这个跳转再看结果,
   CMP DWORD PTR SS:[EBP-8],0
   JE SHORT WaGan.004064EC
其实就是 jmp 4064EC.  也就是说,不执行反击代码。

简单的用高级语言描述下这个函数,其实很简单就是
if (非受无反装备者攻击 && 被攻击方具备反击能力)
{
   反击;
}

而你的目的是做成
if (非受无反装备者攻击 && 非受无发攻击部队攻击 && 被攻击方具备反击能力)
{
   反击;
}


所以你的代码只需要这样写:

                je short Ekd5.0043C365
               
                jmp Ekd5.004064EC   攻击者带无反装备,跳过反击有效代码,返回
         
43C365          mov ecx,dword ptr ss:[ebp-10]
                mov ecx,dword ptr ds:[ecx+8]
                call Ekd5.00406610
                and eax,0FF
                cmp eax,27(兵种)
                jnz Ekd5.0040647C
                jmp Ekd5.004064EC    攻击是27兵种,跳过反击有效代码,返回




其他的一切其他特性,应该懂得改了吧。   这个属性如果是要做成人物特性,即以人物Data序号做判断的,也应该会吧。


祝果冻早日学成所有特性随意变更修改法。


对了,提醒下, 人物信息在exe里,经常有四种表达,两种常是ecx值,两种常是08栈值。

08栈值的都是个简单数字, 一个是Data序号,一个是战场形象编号。  

而两个内存地址,分别是Data信息内存地址和战场信息内存地址。以1024Data为例,  Data信息内存起始地址在 0xD6000处  战场信息内存地址在0x4B2c50处。


Data信息每0x48为一块,战场信息以0x24为一块。

所以应该经常可以看到Imual eax,eax,24  Imual eax,eax,48之类的指令。应该能明白这其中的玄机了吧。


内存各字节的意义,可参看ssbye的用FPE修改曹操传的贴子。

[ 本帖最后由 岱瀛 于 2007-9-11 22:06 编辑 ]


顶部

正在浏览此帖的会员 - 共 3 人在线




当前时区 GMT+8, 现在时间是 2024-11-18 06:53
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.015223 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP