我想将CreatProcess拦截并进行分析,绿豆的那个如何获得其中的参数?

解决方案 »

  1.   

    堆栈情况:
    46 02 00 00 00 00 00 00 
    10 04 00 04 7C E1 07 00 
    FC D6 07 00 B8 7C 0E 00 
    DA D6 07 00 00 00 00 00 
    00 00 00 00 54 66 0E 00 
    BC 43 0E 00 00 00 00 00 
    00 00 00 00 00 00 00 00 
    10 04 00 04 00 00 00 00 
    B4 41 0E 00 B8 7C 0E 00 
    04 7D 0E 00 04 7D 0E 00 
    68 31 0E 00 00 00 00 00 
    36 02 16 00 00 00 00 00 
    00 00 00 00 00 00 00 00 
    00 00 00 00 BC 43 0E 00 
    04 7D 0E 00 B4 41 0E 00 
    54 66 0E 00 00 00 00 00参数堆栈情况:
    000E6654 000E43BC 00000000 00000000 
    00000000 04000410 00000000 000E41B4 
    000E7CB8 000E7D04 000E7D04 000E3168 
    00000000 00160236 00000000 00000000EAX值:
    00000000ECX值:
    00000000EDX值:
    0007D6DAEBX值:
    000E7CB8ESP值:
    0007D6FCEBP值:
    0007E17CESI值:
    04000410EDI值:
    00000000EFLAGS值:
    00000246函数返回地址:
    7CA56748堆栈情况:
    46 02 00 00 00 00 00 00 
    10 04 00 04 F8 D6 07 00 
    C4 D6 07 00 B8 7C 0E 00 
    DA D6 07 00 00 00 00 00 
    00 00 00 00 00 00 00 00 
    54 66 0E 00 BC 43 0E 00 
    00 00 00 00 00 00 00 00 
    00 00 00 00 10 04 00 04 
    00 00 00 00 B4 41 0E 00 
    B8 7C 0E 00 04 7D 0E 00 
    00 00 00 00 7C E1 07 00 
    E7 00 C8 00 54 66 0E 00 
    BC 43 0E 00 00 00 00 00 
    00 00 00 00 00 00 00 00 
    10 04 00 04 00 00 00 00 
    B4 41 0E 00 B8 7C 0E 00参数堆栈情况:
    00000000 000E6654 000E43BC 00000000 
    00000000 00000000 04000410 00000000 
    000E41B4 000E7CB8 000E7D04 00000000 
    0007E17C 00C800E7 000E6654 000E43BCEAX值:
    00000000ECX值:
    00000000EDX值:
    0007D6DAEBX值:
    000E7CB8ESP值:
    0007D6C4EBP值:
    0007D6F8ESI值:
    04000410EDI值:
    00000000EFLAGS值:
    00000246函数返回地址:
    7C8024A0堆栈情况:
    46 02 00 00 00 00 00 00 
    4A 00 00 00 28 D0 07 00 
    F4 CF 07 00 58 D0 07 00 
    C2 D0 07 00 39 4A 00 00 
    00 00 00 00 00 00 00 00 
    00 00 00 00 58 D0 07 00 
    00 00 00 00 00 00 00 00 
    01 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 
    28 D1 07 00 74 D1 07 00 
    00 00 00 00 38 D3 07 00 
    0B 67 83 7C 00 00 00 00 
    58 D0 07 00 00 00 00 00 
    00 00 00 00 01 00 00 00 
    00 00 00 00 00 00 00 00 
    00 00 00 00 28 D1 07 00参数堆栈情况:
    00000000 00000000 0007D058 00000000 
    00000000 00000001 00000000 00000000 
    00000000 0007D128 0007D174 00000000 
    0007D338 7C83670B 00000000 0007D058EAX值:
    00000000ECX值:
    00004A39EDX值:
    0007D0C2EBX值:
    0007D058ESP值:
    0007CFF4EBP值:
    0007D028ESI值:
    0000004AEDI值:
    00000000EFLAGS值:
    00000246函数返回地址:
    7C8024A0
      

  2.   

    貌似可以用 GetArgumentByName()来直接获取参数m_oApiHooker.GetArgumentByName(1)'获取第1个参数
    ...
    m_oApiHooker.GetArgumentByName(4)'获取第2个参数
      

  3.   

    Dim lVal
    m_oApiHooker.GetArgumentByName(lVal,1)'获取第1个参数
    ...
    m_oApiHooker.GetArgumentByName(lVal,4)'获取第2个参数lVal就是获得的参数
      

  4.   

    Dim slVal
    '获取第1个参数
    'm_oApiHooker.GetArgumentByName(lVal,4)'获取第2个参数'lVal就是获得的参数
    .GetArgumentByName slVal, 1
    Me.Text2.Text = lVal编译的时候提示参数类型不符
      

  5.   

    第1个参数是Long型的
    Dim lVal As Long
      

  6.   

    createprocess的几个参数基本上都是指针,你通过GetArgumentByName得到相应的指针后用m_oApiHooker.Pmemcpy2local把数据读到你的变量里来
      

  7.   

    超级.........厉害.哈哈...实际上我前一段一直在用,,,,可以这样做.
    参数堆栈情况:
    000E6654 000E43BC 00000000 00000000 
    00000000 04000410 00000000 000E41B4 
    000E7CB8 000E7D04 000E7D04 000E3168 
    00000000 00160236 00000000 00000000
    其中代表了参数地址
    1        2        3        4
    5        6        ……
    你去读被你HOOK的那个程序对应的地址即可,例如要参数1,就读000E6654,参数2就读000E43BC长度就得看你参数的类型了,嘿嘿我是这么用来着。。比较笨+比较懒+原程序就很好,所以一直没修改豆豆的作品
      

  8.   

    指针啊如果是指针那你就
    读000E6654 处4字节,然后去访问这4字节里的地址应该是因为写了几个游戏修改器,所以手头有直接读内存地址的程序和现成代码。。LZ如果不嫌弃可以留个MAIL。
      

  9.   

    [email protected]
    谢谢各位
      

  10.   

    还有,绿豆的作品好像在Vista下有些问题,会导致被HOOK的程序崩溃
      

  11.   

    vista在安全方面作了更多的限制,可能就是因为这个原因才崩溃的吧
      

  12.   

    我认为是Vista上的内核对象作了一些改动