Example #1
0
def onmsg(key, data, replay=False):
    if key != fhash or key != get_fhash():
        print 'revsync: hash mismatch, dropping command'
        return

    if 'addr' in data:
        ea = get_ea(data['addr'])
    ts = int(data.get('ts', 0))
    cmd, user = data['cmd'], data['user']
    if cmd == 'comment':
        print 'revsync: <%s> %s %#x %s' % (user, cmd, data['addr'],
                                           data['text'])
        text = comments.set(ea, user, str(data['text']), ts)
        MakeComm(ea, text)
    elif cmd == 'extra_comment':
        print 'revsync: <%s> %s %#x %s' % (user, cmd, data['addr'],
                                           data['text'])
        text = comments_extra.set(ea, user, str(data['text']), ts)
        MakeRptCmt(ea, text)
    elif cmd == 'area_comment':
        print 'revsync: <%s> %s %s %s' % (user, cmd, data['range'],
                                          data['text'])
    elif cmd == 'rename':
        print 'revsync: <%s> %s %#x %s' % (user, cmd, data['addr'],
                                           data['text'])
        MakeName(ea, str(data['text']))
    elif cmd == 'join':
        print 'revsync: <%s> joined' % (user)
    else:
        print 'revsync: unknown cmd', data
Example #2
0
def onmsg(bv, key, data, replay):
    if key != bv.session_data['fhash']:
        log_info('revsync: hash mismatch, dropping command')
        return
    cmd, user = data['cmd'], data['user']
    ts = int(data.get('ts', 0))
    if cmd == 'comment':
        log_info('revsync: <%s> %s %#x %s' % (user, cmd, data['addr'], data['text']))
        addr = get_ea(bv, int(data['addr']))
        func = get_func_by_addr(bv, addr)
        # binja does not support comments on data symbols??? IDA does.
        if func is not None:
            text = cmt_data.set(addr, user, data['text'], ts)
            func.set_comment(addr, text)
    elif cmd == 'extra_comment':
        log_info('revsync: <%s> %s %#x %s' % (user, cmd, data['addr'], data['text']))
    elif cmd == 'area_comment':
        log_info('revsync: <%s> %s %s %s' % (user, cmd, data['range'], data['text']))
    elif cmd == 'rename':
        log_info('revsync: <%s> %s %#x %s' % (user, cmd, data['addr'], data['text']))
        addr = get_ea(bv, int(data['addr']))
        rename_symbol(bv, addr, data['text'])
    elif cmd == 'join':
        log_info('revsync: <%s> joined' % (user))
    else:
        log_info('revsync: unknown cmd %s' % data)
Example #3
0
def onmsg(key, data, replay=False):
    if key != fhash or key != cached_fhash():
        print('revsync: hash mismatch, dropping command')
        return

    if hook1: hook1.unhook()
    if hook2: hook2.unhook()
    if hook3: hook3.unhook()

    try:
        if 'addr' in data:
            ea = get_ea(data['addr'])
        ts = int(data.get('ts', 0))
        cmd, user = data['cmd'], data['user']
        if cmd == 'comment':
            print('revsync: <%s> %s %#x %s' % (user, cmd, ea, data['text']))
            text = data['text']
            if sys.version_info.major == 2:
                text = text.encode('utf8')
            text = comments.set(ea, user, text, ts)
            set_cmt(ea, text, 0)
        elif cmd == 'extra_comment':
            print('revsync: <%s> %s %#x %s' % (user, cmd, ea, data['text']))
            text = data['text']
            if sys.version_info.major == 2:
                text = text.encode('utf8')
            text = comments_extra.set(ea, user, text, ts)
            set_cmt(ea, text, 1)
        elif cmd == 'area_comment':
            print('revsync: <%s> %s %s %s' %
                  (user, cmd, data['range'], data['text']))
        elif cmd == 'rename':
            print('revsync: <%s> %s %#x %s' % (user, cmd, ea, data['text']))

            # drop unicode for renaming as it is not supported across older IDA versions
            text = data['text'].encode('ascii', 'replace')
            set_name(ea, text)
        elif cmd == 'join':
            print('revsync: <%s> joined' % (user))
        elif cmd in [
                'stackvar_renamed', 'struc_created', 'struc_deleted',
                'struc_renamed', 'struc_member_created',
                'struc_member_deleted', 'struc_member_renamed',
                'struc_member_changed', 'coverage'
        ]:
            if 'addr' in data:
                print('revsync: <%s> %s %#x (not supported in IDA revsync)' %
                      (user, cmd, ea))
            else:
                print('revsync: <%s> %s (not supported in IDA revsync)' %
                      (user, cmd))
        else:
            print('revsync: unknown cmd', data)
    finally:
        if hook1: hook1.hook()
        if hook2: hook2.hook()
        if hook3: hook3.hook()
Example #4
0
def onmsg(key, data, replay=False):
    if key != fhash or key != cached_fhash():
        print 'revsync: hash mismatch, dropping command'
        return

    if hook1: hook1.unhook()
    if hook2: hook2.unhook()
    if hook3: hook3.unhook()

    try:
        if 'addr' in data:
            ea = get_ea(data['addr'])
        ts = int(data.get('ts', 0))
        cmd, user = data['cmd'], data['user']
        if cmd == 'comment':
            print 'revsync: <%s> %s %#x %s' % (user, cmd, ea, data['text'])
            text = comments.set(ea, user, str(data['text']), ts)
            MakeComm(ea, text)
        elif cmd == 'extra_comment':
            print 'revsync: <%s> %s %#x %s' % (user, cmd, ea, data['text'])
            text = comments_extra.set(ea, user, str(data['text']), ts)
            MakeRptCmt(ea, text)
        elif cmd == 'area_comment':
            print 'revsync: <%s> %s %s %s' % (user, cmd, data['range'],
                                              data['text'])
        elif cmd == 'rename':
            print 'revsync: <%s> %s %#x %s' % (user, cmd, ea, data['text'])
            MakeName(ea, str(data['text']))
        elif cmd == 'join':
            print 'revsync: <%s> joined' % (user)
        elif cmd in [
                'stackvar_renamed', 'struc_created', 'struc_deleted',
                'struc_renamed', 'struc_member_created',
                'struc_member_deleted', 'struc_member_renamed',
                'struc_member_changed', 'coverage'
        ]:
            if 'addr' in data:
                print 'revsync: <%s> %s %#x (not supported in IDA revsync)' % (
                    user, cmd, ea)
            else:
                print 'revsync: <%s> %s (not supported in IDA revsync)' % (
                    user, cmd)
        else:
            print 'revsync: unknown cmd', data
    finally:
        if hook1: hook1.hook()
        if hook2: hook2.hook()
        if hook3: hook3.hook()