美文网首页
汽车之家apisign unidbg逆向

汽车之家apisign unidbg逆向

作者: ever_hu | 来源:发表于2022-01-11 14:04 被阅读0次

    汽车之家apisign unidbg逆向

    逆向

    之前分析到了native函数的入口是sub_2D91C

    image-20220109162920590

    看看sub_2D8C0

    image-20220109162941845

    看看sub_2CC58

    image-20220109163054159

    由于if其他分支都是报Calc Md5 Failure,所以v13等于v22

    image-20220109163317941

    0x2CE56下断点。

    emulator.attach().addBreakPoint(module.base + 0x2CE56);
    
    image-20220109163422806

    看看r6的数据

    image-20220109163459846

    因此s[11]等于0x40030019,所以函数的地址是0x30019,跳转过去看看

    image-20220109163706823

    hook验证一下

    emulator.attach().addBreakPoint(module.base + 0x30019);
    
    image-20220109170057686

    blr在函数返回处下断点,C执行到函数返回处,看看原r1的数据

    image-20220109165910021

    说明确实是在这里生成的。

    image-20220109165759023

    接下来就是看看a1+48这个函数的输入,之前通过mr0可以看到a1+480x400a0ae1,所以函数地址0xa0ae1,跳过去看看

    image-20220109170320953

    发现不是函数,也没办法转成函数,点击CODE32alt+G,将值修改为1

    image-20220110094315392 image-20220110094416810

    选中按P修改为函数

    image-20220110094501331 image-20220110094525126

    看看sub_2EF30

    image-20220110094735152

    目测MD5,在sub_A0AE0下个断点看看

    emulator.attach().addBreakPoint(module.base + 0xa0ae1);
    
    image-20220109170531677

    看看r0的数据

    image-20220109170605047

    cyberchef上试试MD5。

    image-20220109170801913

    和unidbg输出一样。更换输入后,发现前后的字符串不变,说明是固定的。

    实现

    import hashlib
    
    _SALT = '@7U$aPOE@$'
    
    def calc_sign(data):
        data = (_SALT + 'apisign' + data + _SALT)
        sign = hashlib.md5(data.encode()).hexdigest().upper()
        return sign
    
    def test():
        data = '2|f17a9663_acd3_42e8_93ef_f93c5fdbcf50|autohomebrush|1641713028'
        sign = calc_sign(data)
        print(sign)
        assert sign == '1C4E5C182F7FFF5C350E1BB1B4C2B50C'
    
    if __name__ == '__main__':
        test()
    

    相关文章

      网友评论

          本文标题:汽车之家apisign unidbg逆向

          本文链接:https://www.haomeiwen.com/subject/czvbcrtx.html