分析这段代码的参数个数,返回值。

deepool 2006-03-30 11:28:14
各位高手帮忙分析一下。

:10001070 56 push esi
:10001071 8B742408 mov esi, dword ptr [esp+08]
:10001075 83FEFF cmp esi, FFFFFFFF
:10001078 C705E066001000000000 mov dword ptr [100066E0], 00000000
:10001082 7432 je 100010B6
:10001084 8B442410 mov eax, dword ptr [esp+10]
:10001088 6A1B push 0000001B
:1000108A 56 push esi
:1000108B 8935E4660010 mov dword ptr [100066E4], esi
:10001091 A3E8660010 mov dword ptr [100066E8], eax
:10001096 E888FFFFFF call 10001023
:1000109B 6A40 push 00000040
:1000109D 56 push esi
:1000109E E880FFFFFF call 10001023
:100010A3 6A1B push 0000001B
:100010A5 56 push esi
:100010A6 E878FFFFFF call 10001023
:100010AB 6A3C push 0000003C
:100010AD 56 push esi
:100010AE E870FFFFFF call 10001023
:100010B3 83C420 add esp, 00000020

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001082(C)
|
:100010B6 5E pop esi
:100010B7 C3 ret
...全文
76 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
deepool 2006-04-03
  • 打赏
  • 举报
回复
thanks 经过我的测试,至少3个函数,有返回值。这些需要通过查看调用方确定。但是调用点太乱搞不清楚,不过已经可以解决问题了,再次感谢。
deepool 2006-03-30
  • 打赏
  • 举报
回复
<p>
4 2
5 1
</p>
zara 2006-03-30
  • 打赏
  • 举报
回复
从对堆栈中的内容使用来看, 至少应该是 3 个参数 ([esp+08/0c10], 虽然没有使用到 0c). 另外, 由于从对 1001023 子程调用时堆栈平衡是由调用者来进行的, 所以应该看调用该子程的 call 指令后的 add esp, xx 来决定实际的参数个数. 这个严格来说是子程, 不象是函数, 所以没有确切的返回值, 非得要认为有的话, 就是最后一个 call 1001023 的返回值了
deepool 2006-03-30
  • 打赏
  • 举报
回复
^

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧