LLDB ASLR优化

用LLDB+Hopper调试的时候,经常要切来切去对比。由于ASLR存在,每次都要用计算器算一下,非常低下!

网上找到这篇文章 http://www.poboke.com/study/enhanced-lldb-debugger-with-python-script.html,直接在lldb里换算是个好主意。

受到他的启发,我们也可以把lldb里面的地址转换为hopper里的地址。稍微修改了一下源码

#!/usr/bin/python
#coding:utf-8
import lldb
import commands
import optparse
import shlex
import re
# 获取ASLR偏移地址
def get_ASLR():
    # 获取'image list -o'命令的返回结果
    interpreter = lldb.debugger.GetCommandInterpreter()
    returnObject = lldb.SBCommandReturnObject()
    interpreter.HandleCommand('image list -o', returnObject)
    output = returnObject.GetOutput();
    # 正则匹配出第一个0x开头的16进制地址
    match = re.match(r'.+(0x[0-9a-fA-F]+)', output)
    if match:
        return match.group(1)
    else:
        return None
# Super breakpoint
def sbr(debugger, command, result, internal_dict):
    #用户是否输入了地址参数
    if not command:
        print >>result, 'Please input the address!'
        return
    ASLR = get_ASLR()
    if ASLR:
        #如果找到了ASLR偏移,就设置断点
        debugger.HandleCommand('br set -a "%s+%s"' % (ASLR, command))
    else:
        print >>result, 'ASLR not found!'

# Get Address
def adr(debugger, command, result, internal_dict):
    #用户是否输入了地址参数
    if not command:
        print >>result, 'Please input the address!'
        return
    ASLR = get_ASLR()
    if ASLR:
        print >>result, format(eval("%s-%s" % (command, ASLR)), '#04x')
    else:
        print >>result, 'ASLR not found!'

# And the initialization code to add your commands 
def __lldb_init_module(debugger, internal_dict):
    # 'command script add sbr' : 给lldb增加一个'sbr'命令
    # '-f sbr.sbr' : 该命令调用了sbr文件的sbr函数
    debugger.HandleCommand('command script add sbr -f sbr.sbr')
    debugger.HandleCommand('command script add adr -f sbr.adr')
    print 'The "sbr/adr" python command has been installed and is ready for use.'

sbr是拿hopper中的地址下断点,adr是转换为hopper中的地址。


!!!逆向调试LLDB下不了符号断点!!!
!!!逆向调试LLDB下不了符号断点!!!
!!!逆向调试LLDB下不了符号断点!!!

重要的事情说三遍。所以才有了这个插件下地址断点!或者用符号表恢复工具,瞬间又高大上了~

然而通过Runtime也能拿到函数地址

LLDB ASLR优化_第1张图片
Paste_Image.png

现在不借助反汇编器也可以下断点了!!!

http://iosre.com/t/lldb-oc/6711
http://blog.imjun.net/2016/08/25/iOS%E7%AC%A6%E5%8F%B7%E8%A1%A8%E6%81%A2%E5%A4%8D-%E9%80%86%E5%90%91%E6%94%AF%E4%BB%98%E5%AE%9D/

你可能感兴趣的:(LLDB ASLR优化)