本文主要讲解最新版的子校验■■方法,离线等■■方法请看此文http://bbs.iosre.com/t/hopper-mac/1428
进入正题:
搜索特征字符串 “ForceQuit”,然后查看交叉引用,一共有2出,我们看第一处
来到这里:
000000010000b5fc mov rsi, qword [ds:0x10016ec58] ; @selector(boolForKey:), argument “selector” for method imp___got__objc_msgSend, XREF=_main+239
000000010000b603 lea rdx, qword [ds:cfstring_ForceQuit] ; @“ForceQuit”
000000010000b60a mov rdi, r13
000000010000b60d call qword [ds:imp___got__objc_msgSend]
000000010000b613 test al, al
000000010000b615 jmp 0x10000b61b
通过阅读上面的代码,我们发现有个md5的计算,下面就是几个跳转语句:把那几个跳转语句nop掉就可以了。我为了省事,就直接跳转到下一句:
000000010000b5ca mov bl, al
000000010000b5cc mov r14b, byte [ss:rbp+var_29]
000000010000b5d0 mov rdi, qword [ds:objc_cls_ref_NSUserDefaults] ; objc_cls_ref_NSUserDefaults, argument “instance” for method _objc_msgSend
000000010000b5d7 mov r12, qword [ds:0x10016ec40] ; @selector(standardUserDefaults)
000000010000b5de mov rsi, r12 ; argument “selector” for method _objc_msgSend
000000010000b5e1 call r15 ; _objc_msgSend
000000010000b5e4 mov r13, rax
000000010000b5e7 test bl, bl
000000010000b5e9 jmp 0x10000b5ef
000000010000b5eb sbb al, 0x1
000000010000b5ed add byte [ds:rax], al
000000010000b5ef movzx eax, r14b ; XREF=_main+226
000000010000b5f3 cmp eax, 0x1
000000010000b5f6 jmp 0x10000b5fc
000000010000b5f8 sgdt qword [ds:rax]
000000010000b5fb db 0x00 ; ‘.’
000000010000b5fc mov rsi, qword [ds:0x10016ec58] ; @selector(boolForKey:), argument “selector” for method imp___got__objc_msgSend, XREF=_main+239
000000010000b603 lea rdx, qword [ds:cfstring_ForceQuit] ; @“ForceQuit”
000000010000b60a mov rdi, r13
000000010000b60d call qword [ds:imp___got__objc_msgSend]
000000010000b613 test al, al
000000010000b615 jmp 0x10000b61b
000000010000b617 db 0x3f ; ‘?’
000000010000b618 db 0x01 ; ‘.’
000000010000b619 db 0x00 ; ‘.’
000000010000b61a db 0x00 ; ‘.’
000000010000b61b mov rbx, qword [ds:objc_cls_ref_NSMutableDictionary] ; objc_cls_ref_NSMutableDictionary, XREF=_main+270
000000010000b622 mov r12, qword [ds:0x10016e748] ; @selector(objectForKey:)
000000010000b629 lea rdx, qword [ds:cfstring_ThunderInstallCountDict] ; @“ThunderInstallCountDict”
000000010000b630 mov rdi, r13 ; argument “instance” for method _objc_msgSend
000000010000b633 mov rsi, r12 ; argument “selector” for method _objc_msgSend
000000010000b636 call r15 ; _objc_msgSend
000000010000b639 mov rsi, qword [ds:0x10016ec60] ; @selector(dictionaryWithDictionary:), argument “selector” for method _objc_msgSend
000000010000b640 mov rdi, rbx ; argument “instance” for method _objc_msgSend
000000010000b643 mov rdx, rax
000000010000b646 call r15 ; _objc_msgSend