zoukankan      html  css  js  c++  java
  • AppleHDA 10.9.3 disassm 1

    1.通过AppleHDAFunctionGroupFactory::createAppleHDAFunctionGroup(DevIdStruct *)实际创建相应的
    AppleHDAFunctionGroupSTAC9220
    AppleHDAFunctionGroup_80862805
    AppleHDAFunctionGroupWM8800
    AppleHDAFunctionGroupCS4206
    AppleHDAFunctionGroupATI_RS730
    ...
    AppleHDAFunctionGroupAD1984
    AppleHDAFunctionGroupAD1988
    AppleHDAFunctionGroupALC885
    ...
    AppleHDAFunctionGroup这样的对象
    10.9.3 : 0x48162
    createAppleHDAFunctionGroup由AppleHDACodecGeneric::start(IOService *)调用
    AppleHDACodecGeneric::start: 0x478A
    call create... : 0x4ceb

    var_58 = DevIdStruct*

    0x4d26: call qword [r10 + 1F0] ; r10 = AppleHDAFunctionGroup*
    eax = (AppleHDAFunctionGroup* var_hf)->

    0x4cf0: AppleHDACodecGeneric:
    r13(this) + 0xA8 = AppleHDAFunctionGroup*
    r13(this) + 88h = IOService *
    r13(this) + 90h = 0x480a call return,其0x5d0 -> start

    AppleHDACodecGeneric::start中
    r13 --> this
    r12 --> IOService * 参数

    2.AppleHDAFunctionGroup的虚表(0x7c680):
    vtable + 0x200 [0x400a6] => initForNodeID(unsigned short, OSObject *, OSObject *, DevIdStruct *, bool)
    vtable + 0x130 [0x3fa08] => AppleHDANode::runVerb(unsigned short, unsigned short, unsigned int*)
    vtable + 0x1F0 [0x3fd4e] => AppleHDANode::isBitDepthSupported(unsigned int)


    3.AppleHDACodec的虚表:
    vtable + 0x5d0 => start()

    X86-64有16个64位寄存器,分别是:%rax,%rbx,%rcx,%rdx,%esi,%edi,%rbp,%rsp,%r8,%r9,%r10,%r11,%r12,%r13,%r14,%r15。其中:

    %rax 作为函数返回值使用。
    %rsp 栈指针寄存器,指向栈顶
    %rdi,%rsi,%rdx,%rcx,%r8,%r9 用作函数参数,依次对应第1参数,第2参数。。。
    %rbx,%rbp,%r12,%r13,%14,%15 用作数据存储,遵循被调用者使用规则,简单说就是随便用,调用子函数之前要备份它,以防他被修改
    %r10,%r11 用作数据存储,遵循调用者使用规则,简单说就是使用之前要先保存原值
    X86-64寄存器和栈帧:
    http://www.searchtb.com/2013/03/x86-64_register_and_function_frame.html

  • 相关阅读:
    求长度的另一种方法(""+obj).Length
    XCode中如何使用事务
    最终版 Reflector v1.0 (+简单的反流程混淆)
    与ObjectDataSource共舞
    性能&分布式&NewLife.XCode对无限数据的支持
    XCode之第一次亲密接触
    5,ORM组件XCode(动手)
    你知道吗?多个类多线程环境下静态构造函数的执行顺序
    使用C#编写IDA插件 IDACSharp v1.0.2010.0605
    XCMS V1.0 Beta1 发布
  • 原文地址:https://www.cnblogs.com/eaglexmw/p/3859418.html
Copyright © 2011-2022 走看看