UPDATE:18/01/2018
いくつかの男があなたと同じ要件を私に近づきました。いくつかの議論と試行錯誤の後、彼は解決策を見つけました。
1)キーロガーコードのRunLoop.main.run()
行をコメントアウトしてください。
2)アプリサンドボックスを無効にします。アプリケーションサンドボックスを有効にする場合は、このエンタイトルメントをcom.apple.security.device.usb = YES
に追加します。
オリジナル:18/03/2017
私はキーロガーを書いているとき、私はまた、最初にそれのために多くのことを検索。 1日後、私はあきらめた。
私はすぐにProcess
を使用して、自分のUIからキーロガーを実行します。
私が行う方法は、次のとおりです。
は、ファイル/フォルダのパスのようなキーロガーのソースに必要な変更を行います。
キーロガーのソースをコンパイルします。
キーロガーをXcodeのプロジェクトにドラッグし、copy if needed
にチェックを入れます。
実行ファイルは、.app
内のリソースフォルダにあります。
Process
クラスとlaunch()
を使用して実行可能ファイルを実行すると、実行可能ファイル/キーロガーが起動します。
作成したプロセスを終了する必要があります。そうしないと、キーロガーがバックグラウンドで実行されます。キーロガーを停止するには、Process
変数にterminate()
を使用します。
コード:
let pathToKeylogger = Bundle.main.resourcePath! + "/Keylogger" // path to keylogger executable
keylogger = Process() // You need to declare this variable at class-level because you need to have the variable later to terminate it.
keylogger.launchPath = pathToKeylogger
keylogger.launch()
終了するには:
keylogger.terminate()
編集:18/03/2017
にアプリを終了してください通常は、Xcodeの停止ボタンを押すのではなく、メニューバーで終了するか、ドックで終了するかのいずれかです。私はあなたがXcodeで停止を押していると思います。
もう一度お会いしましょう!私はコードを試してみる。 – ssh
私は小さな問題があります。 'keylogger.terminate()'を 'applicationWillTerminate(_ aNotification:Notification)'に配置しましたが、決して呼び出されません。私はプリントステートメントを置くことでチェックして、ターミナルをチェックインしたときにキーロガーはまだバックグラウンドにあります。 – ssh
それは動作します!再度、感謝します。 – ssh