Skip to content

Instantly share code, notes, and snippets.

8628 PUSH {r4, r5, r6, r7, lr}
8632 ADD r7, sp, #12
8636 MOV r5, r1 ; arg2
8640 MOV r6, r0 ; arg1
8644 BL 0x2fec ; _objc_autoreleasePoolPush(arg1, arg2, arg3, arg4)
8648 MOVW r1, #4900 ; 4900
8652 MOVT r1, #0 ; 4900
8656 MOV r4, r0 ; 8644_ret1
8660 LDR r1, [pc, r1] ; load from 13568
8664 MOVW r0, #4960 ; 4960
% bundle exec bin/indis-dis $FN _main
000021b4 e92d40f0 PUSH {r4, r5, r6, r7, lr}
000021b8 e28d700c ADD r7, sp, #12
000021bc e1a05001 MOV r5, r1
000021c0 e1a06000 MOV r6, r0
000021c4 eb000388 BL 0x2fec ; branch_to_sym: _objc_autoreleasePoolPush
000021c8 e3011324 MOVW r1, #4900
000021cc e3401000 MOVT r1, #0
000021d0 e1a04000 MOV r4, r0
000021d4 e79f1001 LDR r1, [pc, r1]
% bundle exec bin/indis-dis ../indis-bundle/spec/fixtures/single-object.o _add
00000000 e92d4080 PUSH {r7, lr}
00000004 e1a0700d MOV r7, sp
00000008 e24dd00c SUB sp, sp, #12
0000000c e5070004 STR r0, [r7, #-4]
00000010 e58d1004 STR r1, [sp, #4]
00000014 e5171004 LDR r1, [r7, #-4]
00000018 e59d2004 LDR r2, [sp, #4]
0000001c e59f0024 LDR r0, [pc, #36] ; value: DCD 00000044
00000020 e08f0000 ADD r0, pc, r0
% bin/indis-dis spec/fixtures/app-arm-release.o start
00002188 LDR r0, [sp]
0000218c ADD r1, sp, #4
00002190 ADD r4, r0, #1
00002194 ADD r2, r1, r4, lsl #2
00002198 BIC sp, sp, #7
0000219c MOV r3, r2
000021a0 LDR r4, [r3], #4
000021a4 CMP r4, #0
000021a8 B.NE #-16
% bin/indis-dis spec/fixtures/single-object.o _add ♺ master Ⓓ ⓜ
00000000 PUSH {r7, lr}
00000004 MOV r7, sp
00000008 SUB sp, sp, #12
0000000c STR r0, [r7, #-4]
00000010 STR r1, [sp, #4]
00000014 LDR r1, [r7, #-4]
00000018 LDR r2, [sp, #4]
0000001c LDR r0, =0x44 REF: value: 00000048
00000020 UNK E08F0000
% diff <(rspec -r pry spec/indis/symbol_spec.rb|sort -r) <(cd spec/fixtures; nm -m app-arm-release.o|sort -r)
< (undefined) external dyld_stub_binder
< (undefined) external _objc_setProperty
< (undefined) external _objc_msgSend_stret
< (undefined) external _objc_msgSendSuper2
< (undefined) external _objc_msgSend
< (undefined) external _objc_autoreleasePoolPush
< (undefined) external _objc_autoreleasePoolPop
< (undefined) external _exit
< (undefined) external __objc_empty_vtable
@farcaller
farcaller / TVRemote.m
Created March 16, 2012 10:01 — forked from xslim/TVRemote.m
TVRemote
@interface TVRemote : NSObject
@property (nonatomic, retain) TVRemoteAbstract *currentRemote;
- (void)createSocketRemote;
@end
@implementation TVRemote
- (void)createSocketRemote {
self.currentRemote = [[TVRemoteSocket alloc] init];
}
@farcaller
farcaller / gist:1801278
Created February 11, 2012 15:56
Refactored macros from bitbucket.org/snej/myutilities
#define $array(OBJS...) ({id objs[]={OBJS}; \
[NSArray arrayWithObjects: objs count: sizeof(objs)/sizeof(id)];})
#define $marray(OBJS...) ({id objs[]={OBJS}; \
[NSMutableArray arrayWithObjects: objs count: sizeof(objs)/sizeof(id)];})
#define $mdict(PAIRS...) ( \
{id pairs[]={PAIRS}; \
NSMutableDictionary *d = [NSMutableDictionary dictionary]; \
int cnt = sizeof(pairs)/sizeof(id); \
- (NSData *)signData:(NSData *)data withIndentity:(SecIdentityRef)identity
{
// FIXME: cleanup cf leaks
SecGroupTransformRef group = SecTransformCreateGroupTransform();
CFReadStreamRef readStream = NULL;
SecTransformRef readTransform = NULL;
SecTransformRef signingTransform = NULL;
CFErrorRef err = NULL;
SecKeyRef privateKey;
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x33f65c98 objc_msgSend + 16
1 ProtocolBuffer 0x35036fb8 -[PBRequester cancel] + 100
2 ProtocolBuffer 0x35036cea -[PBRequester _cancelWithErrorDomain:errorCode:userInfo:] + 30
3 ProtocolBuffer 0x350380f0 -[PBRequester connection:didReceiveResponse:] + 224
4 Foundation 0x350c9230 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidReceiveResponse:] + 84
5 Foundation 0x350c9138 _NSURLConnectionDidReceiveResponse + 80
6 CFNetwork 0x362d1576 URLConnectionClient::_clientSendDidReceiveResponse(_CFURLResponse*, URLConnectionClient::ClientConnectionEventQueue*) + 46
7 CFNetwork 0x362c6fae URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 206