Skip to content

EthanArbuckle/lldb-step-trace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

It's difficult to trace every function call made by a program -- solutions like frida-trace can only handle so many hooks before they crash. This explores using LLDB as a more reliable alternative for bulk tracing.

(It's slow)

main(0x1f29b8740, 0x0, "convert", 0x16fdfef18)
 _objc_msgSend_uncached(0x1f29b8740, "stringWithUTF8String:", 0x1f29b9b18, 0x3)
  lookUpImpOrForward(0x1f29b9b18, "stringWithUTF8String:", 0x1f29b9b18, 0x3)
  lookUpImpOrForward(0x1f29b9b18, "stringWithUTF8String:", 0x0, 0x3)
   dataSegmentsContain(objc_class*)(0x1f29b9b18, 0x16fdfe89c, 0x0, 0x3)
  lookUpImpOrForward(0x1f29b8740, 0x1f29b9b18, 0x1, 0x3)
   initializeAndMaybeRelock(objc_class*, objc_object*, locker_mixin<lockdebug::lock_mixin<objc_lock_base_t>>&, bool)(0x1f29b9b18, 0x1f29b8740, 0x1, 0x3)
    getMaybeUnrealizedNonMetaClass(objc_class*, objc_object*)(0x1f29b8740, 0x1f29b8740, 0x1, 0x3)
   initializeAndMaybeRelock(objc_class*, objc_object*, locker_mixin<lockdebug::lock_mixin<objc_lock_base_t>>&, bool)(0x1f29b8740, 0x1f29b8740, 0x1, 0x3)
    initializeNonMetaClass(0x1f29b8740, 0x1f29b8740, 0x1, 0x3)
     _objc_sync_enter_kind(0x1f29b9b18, 0x2, 0x0, 0x3)
      id2data(objc_object*, SyncKind, usage)(0x0, 0x2, 0x0, 0x3)
      id2data(objc_object*, SyncKind, usage)(0x16fdfe788, 0x40, 0x40, 0x10a0040571a19fa)
       tiny_memalign(0x10002c080, 0x8, 0x0, 0x7f)
        tiny_malloc_should_clear(0x10002c080, 0x8, 0x0, 0x7f)
        tiny_malloc_should_clear(0x10002c080, 0x100037200, 0x0, 0x8)
        tiny_malloc_should_clear(0x100000, 0x14, 0x100, 0x7)
         mvm_allocate_pages_plat(0x203, 0x16fdfe588, 0x100000, 0xfffff)
          mach_vm_map(0x203, 0x16fdfe588, 0x100000, 0xfffff)
         tiny_malloc_should_clear(0x10002c080, 0x143100000, 0x143100000, 0x100000)
         tiny_malloc_should_clear(0x143104080, 0x8, 0x143100000, 0x100000)
        tiny_memalign(0x1431040c0, 0x4, 0x143100000, 0x100000)
        tiny_memalign(0x10002c080, 0x1431040c0, 0x143100000, 0x40)
         free_tiny(0x1431040c0, 0x0, 0x40, 0x40)
         free_tiny(0x10002c080, 0x100037200, 0x4, 0x143100000)
          tiny_free_no_lock(0x1431040c0, 0x100037200, 0x4, 0x143100000)
          tiny_free_no_lock(0x10002c080, 0x100037200, 0x1431040c0, 0x4)
    initializeNonMetaClass(0x16fdfe820, 0x1f089c208, 0x0, 0x103)
    _setThisThreadIsInitializingClass(objc_class*)(0x1, 0x1f089c208, 0x0, 0x16fdfe820)
   initializeNonMetaClass(0x1f29b8740, 0x1f089c208, 0x0, 0x16fdfe820)
    CALLING_SOME_+initialize_METHOD(0x1f29b8740, "initialize", 0x0, 0x16fdfe820)
     _objc_msgSend_uncached(0x1f29b8740, "initialize", 0x1f29b9b18, 0x3)
      lookUpImpOrForward(0x1f29b8740, 0x1f29b9b18, 0x1, 0x3)
       initializeAndMaybeRelock(objc_class*, objc_object*, locker_mixin<lockdebug::lock_mixin<objc_lock_base_t>>&, bool)(0x1f29b9b18, 0x1f29b8740, 0x1, 0x3)
        getMaybeUnrealizedNonMetaClass(objc_class*, objc_object*)(0x1f29b8740, 0x1f29b8740, 0x1, 0x3)
       initializeAndMaybeRelock(objc_class*, objc_object*, locker_mixin<lockdebug::lock_mixin<objc_lock_base_t>>&, bool)(0x1f29b8740, 0x1f29b8740, 0x1, 0x3)
        initializeNonMetaClass(0x1f29b8740, 0x1f29b8740, 0x1, 0x3)
         _objc_sync_enter_kind(0x1f29b9b18, 0x2, 0x0, 0x3)
        _objc_sync_exit_kind(0x1f29b9b18, 0x2, 0x1, 0x103)
        _objc_sync_exit_kind(0x143104098, 0x2, 0x1, 0x103)
      lookUpImpOrForward(0x1f29b9b18, 0x2, 0x1, 0x103)
      lookUpImpOrForward(0x1f29b9b18, "initialize", 0x1f381bae8, 0x103)
      lookUpImpOrForward(0x18fed53bd, 0x0, "dyld_v1  arm64e", 0x2a7bb8000)
       method_t::imp(bool) const(0x18fed53bd, 0x0, "dyld_v1  arm64e", 0x2a7bb8000)
     +[NSString initialize](0x1f29b8740, "initialize", 0x0, 0x16fdfe820)
      _objc_msgSend_uncached(0x1f29b8740, "class", 0x1f29b9b18, 0x3)
       lookUpImpOrForward(0x1f29b8740, 0x1f29b9b18, 0x1, 0x3)
        initializeAndMaybeRelock(objc_class*, objc_object*, locker_mixin<lockdebug::lock_mixin<objc_lock_base_t>>&, bool)(0x1f29b9b18, 0x1f29b8740, 0x1, 0x3)
         getMaybeUnrealizedNonMetaClass(objc_class*, objc_object*)(0x1f29b8740, 0x1f29b8740, 0x1, 0x3)
        initializeAndMaybeRelock(objc_class*, objc_object*, locker_mixin<lockdebug::lock_mixin<objc_lock_base_t>>&, bool)(0x1f29b8740, 0x1f29b8740, 0x1, 0x3)
         initializeNonMetaClass(0x1f29b8740, 0x1f29b8740, 0x1, 0x3)
          _objc_sync_enter_kind(0x1f29b9b18, 0x2, 0x0, 0x3)
         _objc_sync_exit_kind(0x1f29b9b18, 0x2, 0x1, 0x103)
         _objc_sync_exit_kind(0x143104098, 0x2, 0x1, 0x103)
       lookUpImpOrForward(0x1f29b9b18, 0x2, 0x1, 0x103)
       lookUpImpOrForward(0x1f29b9b18, "class", 0x1f381bae8, 0x103)
       lookUpImpOrForward(0x1f29942e0, "class", 0x0, 0x2a7bb8000)
       lookUpImpOrForward(0x1f29942e0, "class", 0x0, 0x2a7bb8000)
       lookUpImpOrForward(0x18debdb9d, 0x0, 0x3, 0xffffffff)
        method_t::imp(bool) const(0x18debdb9d, 0x0, 0x3, 0xffffffff)
     +[NSString initialize](0x1f29b8740, "class", 0x0, 0x16fdfe820)
      _NSDefaultCStringEncoding(0x1f29b8740, "class", 0x0, 0x16fdfe820)
      _NSDefaultCStringEncoding(0x0, "class", 0x0, 0x16fdfe820)
      _NSDefaultCStringEncoding(0x18fdf5d9c, "class", 0x0, 0x16fdfe820)
     +[NSString initialize]("NSTaggedPointerString", "class", 0x0, 0x16fdfe820)
      look_up_class("NSTaggedPointerString", "class", 0x0, 0x16fdfe820)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages