LocationAwarenessoniPhone

LocationAwarenessoniPhone  Hack Cell id location into the iPhone and integrate with Yahoo! Zonetag (http://zonetag.research.yahoo.com//
Introduction
Zonetag makes it easy to get Location. http://developer.yahoo.com/yrb/zonetag/locatecell.html 
Details
Reverse engineer the FieldTest.app to get API calls that we need. 
Ok, finally managed to compile not crash after reverse engineering FieldTest.app but what does it do ;-) 
include <CoreFoundation/CoreFoundation.h>

#include <stdio.h>
#include <time.h>
#include <dlfcn.h>

typedef struct __CFMachPort *CFMachPortRef;

extern void * _CTServerConnectionCreate(CFAllocatorRef, int (*)(void *, CFStringRef, CFDictionaryRef, void *), int *);
extern int _CTServerConnectionSetVibratorState(int *, void *, int, int, int, int, int);
extern int _CTServerConnectionRegisterForNotification(void*, void*, int*);
extern mach_port_t _CTServerConnectionGetPort(void*);
extern void _CTServerConnectionCellMonitorStart( void*);

int callback(void *connection, CFStringRef string, CFDictionaryRef dictionary, void *data) {
        printf("callback (but it never calls me back :( ))/n");
        CFShow(string);
        CFShow(dictionary);

        return 0;
}

void sourcecallback ( CFMachPortRef port, void *msg, CFIndex size, void *info)
{
        printf("Source called back/n");
}

int main() {
        printf("10 seconds of pleasure!!111!!one!!!!111!!/n");

        int x = 0;

        void *connection = _CTServerConnectionCreate(kCFAllocatorDefault, callback, &x);
        void    *handle;
        handle = dlopen("/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony", RTLD_LOCAL | RTLD_LAZY);
        void* kCTCellMonitorUpdateNotification = dlsym(handle, "kCTCellMonitorUpdateNotification");
        if( kCTCellMonitorUpdateNotification== NULL)
        {
                printf("Could not find kCTCellMonitorUpdateNotification/n");
        }

        _CTServerConnectionRegisterForNotification(connection,kCTCellMonitorUpdateNotification,&x);
        mach_port_t port ;
        printf("%d/n", port);
        port  = _CTServerConnectionGetPort(connection);
        printf("%d/n", port);
        printf("%x/n", connection);
        CFMachPortContext  context = { 0, 0, NULL, NULL, NULL };

        //Boolean shouldFreeInfo = false;
        printf("Done/n");

        CFMachPortRef ref = CFMachPortCreateWithPort(kCFAllocatorDefault,port,NULL,NULL, NULL);

          CFRunLoopSourceRef rlref = CFMachPortCreateRunLoopSource ( kCFAllocatorDefault, ref, 0);
          CFRunLoopRef currentRunLoop = CFRunLoopGetCurrent();
          CFRunLoopAddSource(currentRunLoop, rlref, kCFRunLoopCommonModes);
          _CTServerConnectionCellMonitorStart( connection);

        sleep(15);
        return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值