相关疑难解决方法(0)

如何以编程方式确定我的应用程序是否在iphone模拟器中运行?

正如问题所述,我主要想知道我的代码是否在模拟器中运行,但也有兴趣了解正在运行或正在模拟的特定iphone版本.

编辑:我在问题名称中添加了"以编程方式"这个词.我的问题是能够动态地包含/排除代码,具体取决于正在运行的版本/模拟器,所以我真的在寻找类似于预处理器指令的东西,它可以为我提供这些信息.

xcode objective-c ios ios-simulator swift

263
推荐指数
12
解决办法
12万
查看次数

iOS - 检测应用程序是否从Xcode运行

我试图根据代码是通过USB/Xcode(调试)运行,还是从app store(发布版)下载的生产模式启用/禁用部分代码.我知道检查它是否正在运行DEBUGRELEASE模式如下:

在此输入图像描述

#ifdef DEBUG

// Stuff for debug mode

#else

// Stuff for release mode

#endif
Run Code Online (Sandbox Code Playgroud)

但问题是,我看到一个明显的循环漏洞,你可以将'Run'构建方案的Build Configuration从'Debug'更改为'Release'.更好的方法是,如果我可以简单地检测它是否从Xcode运行.我还没有办法检查这个.

有没有办法检查iOS应用程序是否从Xcode运行?

debugging xcode preprocessor ios

11
推荐指数
1
解决办法
2441
查看次数

iOS上的可恢复断言/断点,如带有MS编译器的__debugbreak()

我正在尝试实现自定义资产宏(类似于assert.h所具有的),但我希望能够在获得并断言之后继续执行.

例如,一个这样的ASSERT实现可以是:

#define ASSERT(expr) ((void)( (!!(expr)) || (__debugbreak(), 0)))
Run Code Online (Sandbox Code Playgroud)

__debugbreak是Microsoft编译器中的一个内部函数,它插入了软件断点,相当于_asm int 3x86.对于iOS,有不同的方法来实现__debugbreak:

  • __asm__("int $3"); 对于x86.
  • __asm__("bkpt #0"); 对于常规手臂.
  • __asm__("brk #0"); for arm64
  • __builtin_trap()
  • raise(SIGTRAP)

但是当我的断言命中时,所有这些都不能简单地跨过并继续我在使用visual studio时可以做的事情; 当我的iOS构建中的某些东西断言它在断言时卡住了,我别无选择,只能终止,我甚至无法手动移动指令指针并跳过断言.

是否有可能在iOS上实现断言进入调试器并仍允许我继续执行的断言?

c c++ debugging assert ios

10
推荐指数
1
解决办法
490
查看次数

检测Cycript/Substrate或gdb是否附加到iOS应用程序的进程?

我正在构建一个将敏感数据传输到我的服务器的iOS应用程序,我正在签署我的API请求作为额外措施.我想尽可能地进行逆向工程,并且使用Cycript查找某些真实应用程序的签名密钥,我知道通过附加到流程来找到这些密钥并不困难.我完全清楚,如果有人真的很熟练并且努力尝试,他们最终利用,但我想尽可能地努力,同时仍然方便自己和用户.

我可以检查越狱状态并采取其他措施,或者我可以执行SSL固定,但通过附加到进程并修改内存,两者仍然很容易绕过.

有没有办法检测是否有某些东西(无论是Cycript,gdb,还是任何可用于破解流程的类似工具)附加到流程中,而不是被App Store拒绝?

编辑:这不是检测iOS应用程序是否在调试器中运行的重复.该问题与输出更相关,它检查输出流以确定是否有输出流附加到记录器,而我的问题与此无关(并且该检查不包括我的条件).

reverse-engineering ios cycript process-injection

5
推荐指数
1
解决办法
1191
查看次数

如何检测应用程序是否从 xcode 启动?

如何检测我的应用程序是在编译后从 xcode 启动还是从 itunes 下载的软件包启动?

下面的代码似乎不起作用,因为当我从 xcode 构建并运行它时,else 块总是被执行。

#if (TARGET_OS_SIMULATOR)

#else
    //Xcode did not launch this app
#endif
Run Code Online (Sandbox Code Playgroud)

macos xcode objective-c ios

4
推荐指数
1
解决办法
1134
查看次数