尝试跟踪函数时出现 SIGBUS?

逆向工程 艾达 部件
2021-06-16 05:15:23

我正在开发一款破解版(Mach-O、mac 应用程序)。

现在,应用程序本身很奇怪,老实说我真的不知道从哪里开始。有多个线程,主函数并没有真正告诉我串行验证的位置。

我没有通过 main,而是通过_objc_msgSend并发现了一些有趣的函数,它们打印出通常的“你赢/你输”。

如果我检查这些参考文献,我最终会在这里:

; Segment type: Pure data
000062F4 __inst_meth segment dword public 'DATA' use32
000062F4 assume cs:__inst_meth
000062F4 ;org 62F4h
000062F4 stru_62F4 __objc_method_list <0, 0Eh>   ; DATA XREF: __class:stru_60C4↑o
000062FC __objc_method <offset sel_dealloc, offset aV804, \ ; -[MCAppDelegate dealloc] ...
000062FC                offset __MCAppDelegate_dealloc_>
00006308 __objc_method <offset sel_succeed, offset aV804, \ ; -[MCAppDelegate succeed] ...
00006308                offset __MCAppDelegate_succeed_>
00006314 __objc_method <offset sel_crackDetected, offset aV804, \ ; -[MCAppDelegate crackDetected] ...
00006314                offset __MCAppDelegate_crackDetected_>
00006320 __objc_method <offset sel_fail, offset aV804, \ ; -[MCAppDelegate fail] ...
00006320                offset __MCAppDelegate_fail_>
0000632C __objc_method <offset sel_a, offset aV804, offset __MCAppDelegate_a_> ; -[MCAppDelegate a] ...
00006338 __objc_method <offset sel_b, offset aV804, offset __MCAppDelegate_b_> ; -[MCAppDelegate b] ...
00006344 __objc_method <offset sel_c, offset aV804, offset __MCAppDelegate_c_> ; -[MCAppDelegate c] ...
00006350 __objc_method <offset sel_d, offset aV804, offset __MCAppDelegate_d_> ; -[MCAppDelegate d] ...
0000635C __objc_method <offset sel_e, offset aV804, offset __MCAppDelegate_e_> ; -[MCAppDelegate e] ...
00006368 __objc_method <offset sel_f, offset aV804, offset __MCAppDelegate_f_> ; -[MCAppDelegate f] ...
00006374 __objc_method <offset sel_mk, offset aV804, \ ; -[MCAppDelegate mk] ...
00006374                offset __MCAppDelegate_mk_>
00006380 __objc_method <offset sel_applicationDidFinishLaunching_, \ ; -[MCAppDelegate applicationDidFinishLaunching:] ...
00006380                offset aV12048, \
00006380                offset __MCAppDelegate_applicationDidFinishLaunching__>
0000638C __objc_method <offset sel_window, offset a804_0, \ ; -[MCAppDelegate window] ...
0000638C                offset __MCAppDelegate_window_>
00006398 __objc_method <offset sel_setWindow_, offset aV12048, \ ; -[MCAppDelegate setWindow:] ...
00006398                offset __MCAppDelegate_setWindow__>
00006398 __inst_meth ends

现在,不幸的是,这并没有让我去任何地方。我检查了参考资料,什么也没找到。

在这次失败的尝试之后,我尝试使用本地 MacOS 调试器通过 IDA 跟踪函数。

首先,它在启动过程后立即抛出此错误:

调试器服务器中的意外 dyld_opcode (init_dyld):5ffb

我完全没有发现有关此的信息,所以我只是忽略了它。

然后我开始了函数跟踪并得到了这个:

收到 SIGBUS 信号(总线错误)(exc.code a,tid 24571)

现在,请记住,这是我的第一个“真正的”crackme。我之前所做的一切都只是一个命令行应用程序,所以比这简单得多。

我什至不确定“功能跟踪”是否是我认为的那样。我希望有某种函数调用层次结构,在那里我可以找到所谓的“失败”函数。

0个回答
没有发现任何回复~