标题: 关于OD中子程序(函数)的问题
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-2-13 13:30 资料 短消息 看全部作者
楼主的提问的函数调用在周大的《曹操传exe部分函数功能》中已有注释:

407A09检测武将ecx是否装备特殊效果为08栈的特殊道具

407AF2获取武将ecx装备特殊效果为08栈的特殊道具的特殊效果值

41DF70获取武将ecx的兵种

44F9A0获取兵种ecx的攻击范围

之后自己组织一下,比如:PUSH XXXXXXXX ; 这可能是特效号、道具编号、武将DATA编号、兵种编号、法术编号等等。

当遇到没有注解的函数时,先用OD注释出已知函数,再调试出未知部分,一边看OD一边看游戏窗口,有时也只能靠猜测


顶部
性别:男-离线 蛇夫座

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 仁勇校尉
功绩 2
帖子 200
编号 293516
注册 2008-10-5
来自 永不言弃!
家族 轩辕学院


发表于 2010-2-13 16:23 资料 短消息 看全部作者
回复 #3 武骧金星 的帖子

C、C++语言函数未优化时反汇编形式一般如:

push    ebp             ; 保护基址寄存器EBP
mov     ebp, esp      ; 使用EBP寻址
sub      esp, 0C        ; 开辟局部变量

mov     esp, ebp      ; 清理堆栈
pop      ebp            ; 还原EBP
retn                       ; 弹出返回地址到EIP指令指针寄存器

所以到retn 指令时函数才结束

汇编语言不同于高级语言,它可以直接操作内存,并不局限于函数形式

直于那条黑线你管它干什么,只要在有黑线的地方修改过指令黑线就会断开或者消失

这是因为OD工程记录下了你的修改,最重要的是告诉你判断一个函数是否结束不是靠那条黑线。


顶部

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




当前时区 GMT+8, 现在时间是 2025-8-21 03:10
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

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

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