title: Detect if Cycript/Substrate or gdb is attached to an iOS app's process?
body: <p>I am building an iOS app that transmits sensitive data to my server, and I'm signing my API requests as an additional measure. I want to make reverse engineering as hard as possible, and having used Cycript to find signing keys of some real-world apps, I know it's not hard to find these keys by attaching to a process. I am absolutely aware that if someone is really skilled and tries <em>hard enough</em>, they eventually <em>will</em> exploit, but I'm trying to make it as hard as possible, while still being convenient for myself and users.</p>
  
  <p>I can check for jailbroken status and take additional measures, or I can do SSL pinning, but both are still easy to bypass by attaching to the process and modifying the memory.</p>
  
  <p>Is there any way to detect if <em>something</em> (whether it be Cycript, gdb, or any similar tool that can be used for cracking the process) is attached to the process, while not being rejected from App Store?</p>
  
  <p><strong>EDIT:</strong> This is not a duplicate of <a href="https://stackoverflow.com/questions/4744826/detecting-if-ios-app-is-run-in-debugger">Detecting if iOS app is run in debugger</a>. That question is more related to outputting and it checks an output stream to identify if there's an output stream attached to a logger, while my question is not related to that (and that check doesn't cover my condition).</p>