标签: jailbreak

有没有办法确定iPhone是否正在漫游?

我正在开发一个iPhone应用程序,并且非常想确定设备是否正在漫游,以便我可以智能地避免在用户家庭网络之外花费昂贵的连接.

我写的应用程序是用于越狱手机,但如果可能的话,我更愿意使用标准的SDK.

这是我已经找到的:

1. Apple SDK: 在Apple文档中,我在Apple的SCNetworkReachability API中找到了承诺.通过API,您可以访问WIFI或手机网络,当前是否建立了网络连接等.但是,搜索SCNetworkReachability API参考pdf以获取"漫游"或"漫游"两者均为nil.他们的示例代码也是如此.

2.越狱iPhone FS的Grep: 首选项 - >常规 - >网络选项卡是用户可以打开或关闭漫游的地方.查看plist文件("/Applications/Preferences/Network.plist"),我能够找到以下引用:

        PostNotification = "com.apple.commcenter.InternationalRoamingEDGE.changed";
        cell = PSSwitchCell;
        default = 1;
        defaults = "com.apple.commcenter";
        key = InternationalRoamingEDGE;
        label = "EDGE_ROAMING_TOGGLE";
        requiredCapabilities =             (
            telephony
        );
Run Code Online (Sandbox Code Playgroud)

这当然是一个领先者,因为看起来我可以注册用户更改了InternationalRoaming设置的通知.尽管如此,我不确定如何将其变成他们实际上正在漫游的知识.

3.检查SpringBoard的类转储源: 我使用class-dump转储了SpringBoard的.我无法找到任何"漫游"或"漫游"的引用

4.显然我开始在SO检查这个: 找不到任何相关的东西.

进一步的步骤:有人在这里有任何建议吗?我知道这是可能的.但苹果显然很难找到它.我非常怀疑,如果不使用私有框架,这是可能的.(例如CoreTelephony).由于这是一个越狱的应用程序,我可能会使用SpringBoard中的注入代码来屏幕抓取运营商名称,但我真的更愿意不去那条路线.任何建议都非常感谢.谢谢.

iphone jailbreak roaming-profile core-telephony

21
推荐指数
1
解决办法
2万
查看次数

iOS - 将"对象"添加到现有应用程序(越狱)

如何将"对象"添加到现有应用程序?

例如,EasyRefresh for Chrome调整,在iOS Chrome应用程序中启用了一个新按钮,就像许多其他调整一样.

我怎么可以添加一个简单UIButton的,例如,Twitter应用程序?

是否有任何GitHub项目可以帮助我理解它是如何完成的?


图片

图像来源:ModMyI


谢谢.

tweak jailbreak tampering ios

21
推荐指数
2
解决办法
7282
查看次数

运行时的iOS Patch程序指令

如何在应用程序运行时修改应用程序中的各个汇编指令?

我有一个Mobile Substrate调整,我正在为现有的应用程序编写.在tweak的构造函数(MSInitialize)中,我需要能够在应用程序的代码中重写单个指令.我的意思是,我希望修改应用程序的地址空间中的多个位置,但在每个实例中,只需要修改一条指令.我已经为应用程序禁用了ASLR,并且知道要修补的指令的确切内存地址,并且我有新指令的十六进制字节(作为char [],但这是不重要的,并且必要时可以更改).我只需要弄清楚如何进行更改.

我知道iOS使用数据执行保护(DEP)来指定可执行内存页面也不可写,反之亦然,但我知道可以在越狱设备上绕过它.我也知道iDevices使用的ARM处理器有一个指令缓存,需要更新以反映更改.但是,我甚至不知道从哪里开始这样做.

所以,为了回答肯定会被问到的问题,我没有尝试过任何事情.这不是因为我很懒; 相反,这是因为我完全不知道如何实现这一目标.任何帮助都将非常感激.

编辑:

如果它有帮助,我的最终目标是在移动基板调整中使用它来挂钩App Store应用程序.以前,为了修改这个应用程序,必须先破解它来解密应用程序,以便修补二进制文件.我想做到这一点,所以人们不必破解应用程序,因为这可能导致盗版,我强烈反对.我不能正常使用Mobile Substrate,因为所有的工作都是用C++完成的,而不是Objective-C,并且应用程序被剥离,没有任何符号可供使用MSHookFunction.

c assembly jailbreak ios cydia-substrate

21
推荐指数
1
解决办法
2315
查看次数

通过mac上的gcc编译iOS Objective-C命令行应用程序

这是一个非常简单的Objective-C控制台应用程序:

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    NSLog(@"Hello world!");

    [pool drain];

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc main.m -o main -ObjC -framework Foundation -framework CoreLocation在Mac上编译它.

我的Mac上也安装了iOS SDK.如何修改此命令以在我的计算机上编译相同的代码,以便在(越狱)iOS设备上使用

然后,我可以通过ssh传输可执行文件并使用它进行签名ldid.

gcc jailbreak ios

16
推荐指数
2
解决办法
2万
查看次数

iOS App的Root权限

我正在开发一个针对越狱iOS设备的应用程序.它有助于自动执行某些任务.我需要在/ private/var/mobile/Library中创建一个简单的文本文件(实际上是.lua文件).显然,调试器会抛出访问被拒绝的异常.该应用程序现在被命名为"CreateFile",用于测试.

我尝试了以下步骤来获得root访问权限:

  1. 正常构建应用程序.
  2. 在应用程序包中创建可执行文件的副本.
  3. 打开原始可执行文件并使用以下脚本替换其内容:

    #!/bin/bash
    dir=$(dirname "$0")
    exec "${dir}"/CreateFile "$@"
    
    Run Code Online (Sandbox Code Playgroud)

    在iOS上直接启动根应用程序失败.因此,我们使用启动根可执行文件的脚本替换应用程序的主可执行文件.

  4. 在终端中,导航到应用包.

  5. chmod 0775原始可执行文件和chmod 6775复制的可执行文件.
  6. 将应用程序包复制到/ Applications到设备.重启SpringBoard,你应该好好去.如果应用程序未启动,请在设备上重复步骤5和6.

使用此方法,我可以成功将应用程序安装到/ Applications文件夹并启动它,但是我希望我仍然没有root权限,因为只要应用程序尝试写入操作,它就会崩溃.

如果有人能对这种情况有所了解,我将非常感激!

编辑:

在@creker的建议下做了一些额外的测试.当我尝试在应用程序的文档中创建允许目录中的文件时,它创建就好了,没有任何问题.因此,我确信文件创建不会导致崩溃,并且它只是无法访问的文件夹路径.

同样在@creker的建议下,我尝试将应用程序安装到/ Applications而没有任何启动脚本.应用程序以这种方式打开时崩溃.如果我在安装后将应用程序可执行文件chmod到775,则应用程序将打开但在尝试创建文件时仍会崩溃.

我查看了崩溃记者的系统日志.这是崩溃线:

System.UnauthorizedAccessException: Access to the path "/private/var/mobile/Library/test.txt" is denied
Run Code Online (Sandbox Code Playgroud)

仍然希望解决这个问题,欢迎任何想法!

root jailbreak ios

15
推荐指数
1
解决办法
1269
查看次数

有没有办法检测iOS 6上的漫游状态?

我的应用程序使用以下方法来检测iOS 4和5中的漫游.

NSString *carrierPListSymLinkPath = @"/var/mobile/Library/Preferences/com.apple.carrier.plist"; 
NSString *operatorPListSymLinkPath = @"/var/mobile/Library/Preferences/com.apple.operator.plist"; 

NSFileManager *fm = [NSFileManager defaultManager]; 
NSError *error = nil; 

NSString *carrierPListPath = [fm destinationOfSymbolicLinkAtPath:carrierPListSymLinkPath error:&error];     

NSString *operatorPListPath = [fm destinationOfSymbolicLinkAtPath:operatorPListSymLinkPath error:&error];

return (![operatorPListPath isEqualToString:carrierPListPath]); 
Run Code Online (Sandbox Code Playgroud)

但是这个代码总是在iOS6上返回false(即使我不漫游,它总是返回false),我认为它可能是由Apple更改的plist文件位置,任何人都面临同样的问题,任何人都可以帮助我吗?

谢谢.

roaming jailbreak ios ios6

14
推荐指数
1
解决办法
3512
查看次数

如何更改iOS应用程序的权利?

我需要运行以下代码来关闭我的iPhone屏幕.

在iOS6上:

void (*BKSDisplayServicesSetScreenBlanked)(BOOL blanked) = (void (*)(BOOL blanked))dlsym(RTLD_DEFAULT, "BKSDisplayServicesSetScreenBlanked");
Run Code Online (Sandbox Code Playgroud)

然后使用:

BKSDisplayServicesSetScreenBlanked(1); // 1 to dim, 0 to undim
Run Code Online (Sandbox Code Playgroud)

它不起作用.有人告诉我,我需要com.apple.backboard.client权利才能在我的iphone上运行.我不知道如何设置这些权利.我已经看到了几种设置权利的方法,但它们对我来说非常困惑,就像这一样.

是的,您需要对权利进行编码签名.但是,不,它不必与越狱手机上的Apple证书.您可以通过下载ldid可执行文件伪造代码签名,然后执行

cd MyAppName.app 
ldid -Sentitlements.xml MyAppName
Run Code Online (Sandbox Code Playgroud)

假设您的应用程序名为MyAppName,并且您创建了权利文件entitlements.xml.我相信这个权利文件对你有用,如果你伪造用ldid代码签名的话.

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
   <dict>
     <key>com.apple.backboard.client</key>
     <true/>
   </dict> 
</plist>
Run Code Online (Sandbox Code Playgroud)

即使使用上述方法,我在哪里放置上述权利文件?

xcode objective-c jailbreak entitlements ios

14
推荐指数
1
解决办法
9496
查看次数

试图在我的越狱iphone上部署我的应用程序,但该应用程序立即关闭!

我正试图在我的越狱iphone上开发iphone应用程序,我似乎无法让这个过程失效,因为无论何时我部署我的应用程序,将所有文件权限设置为777,并且重新启动,当我尝试将应用程序立即关闭时发动它.此外,它没有iphone模拟器中的自动光泽xcode显示,那么是什么给出了?

我通过keychain访问生成了证书,并为REQUIREPROVISIONING和ALLOWPROVISIONING添加了两个密钥(两个值都没有),然后在xcode中设置了相应的证书,但是当我尝试在手机上运行时,应用程序仍然立即关闭.

是什么赋予了?

iphone xcode jailbreak ios-simulator

13
推荐指数
1
解决办法
1万
查看次数

Xcode 4.2:尝试使用越狱的iPhone 3G进行开发时出现错误0xC002

我有这个越狱的iPhone 3G与iOS版本4.2.1(最新支持的版本).当我将它连接到Xcode 4.2时,Xcode开始复制调试符号.它会在进程结束时停止复制,并显示以下错误:

Xcode has encountered an unexpected error (0xC002)
No such file or directory, at ‘/SourceCache/DTDeviceKit/DTDeviceKit-867/DTDeviceKit/DTDeviceKit_Utilities.m:864’
Run Code Online (Sandbox Code Playgroud)

有没有人遇到类似的事情?

我知道我应该尝试恢复手机,但我要求以防万一有人能想出一个不涉及恢复它的解决方案.

mactechnews.de的这篇文章中,一个人报告了同样的问题 - 到目前为止没有解决方案.

jailbreak xcode4 ios5

13
推荐指数
2
解决办法
6252
查看次数

如何在越狱的iOS设备上监控应用程序的API调用?

我正在对我没有源代码的iOS应用程序进行审核.为了获得对环境的更多控制,我在越狱的iPad上运行应用程序.

我希望能够监控应用程序正在进行的API调用...理想情况下,我想找到类似Rohitab的基于MS Windows的API监视器,而不是iOS.

我做了一些研究,发现KennyTM的一个名为" Subjective-C " 的项目似乎可以做我需要的.我实际上一直在使用cycript脚本,以及Google代码站点上提供的libsubjc.dylib.

但是,我一直无法弄清楚如何正确地让它开始记录应用程序的调用.这是 Subjective-C(libsubjc)的作者编写的cycript脚本链接.我也粘贴了下面的脚本.

/*

libsubjc.cy ... Use libsubjc in cycript.
Copyright (C) 2009  KennyTM~ <kennytm@gmail.com>

[...GPL3...]
*/

dlopen("libsubjc.dylib", 10);
if (!dlfun) {
    function dlfun(fn, encoding, altname) { var f = new Functor(dlsym(RTLD_DEFAULT, fn), encoding); if (f) this[altname || fn] = f; return f; }
}

dlfun("SubjC_start", "v");
dlfun("SubjC_end", "v");

dlfun("SubjC_set_file", "v^{sFILE=}");
dlfun("SubjC_set_maximum_depth", "vI");
dlfun("SubjC_set_print_arguments", "vB");
dlfun("SubjC_set_print_return_value", "vB");
dlfun("SubjC_set_print_timestamp", "vB");

SubjC_Deny = 0, SubjC_Allow …
Run Code Online (Sandbox Code Playgroud)

c objective-c cydia jailbreak ios

13
推荐指数
1
解决办法
2008
查看次数