1

我为 iOS 编写了一个 iOKit fuzzer。这是代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mach/mach.h>
#include <mach/vm_map.h>
#include <IOKit/IOKitLib.h>

int main()
{
  io_service_t service = IOServiceGetMatching(kIOMasterPortDefault, IOserviceMatching("IOUSBHIDDriver")); // change service each time
  if(!service)
  {
    return -1;
  }
  io_connect_t connect;
  kern_return_t kr = IOServiceOpen(service, mach_task_self(), 0, &connect);
  if(kr != kIOReturnSuccess)
  {
    return -1;
  }

  uint32_t selector =3;
  uint64_t input[0];
        input[0] = 0x44444444444;
  IOConnectCallMethod(connect, selector, input, 1, 0, 0, NULL, NULL, NULL, NULL);
  printf("Did it crash? No? Do it again! -Toxic\n");
}

我一直在尝试用 GCC 编译它一段时间,但我得到了各种各样的错误。我想知道是否有人确切知道如何为 iOS 编译命令行工具。谢谢。

4

2 回答 2

0

Idk您是否找到了解决方案,但无论如何。如果您想在设备类型上使用 clang 进行编译:clang -framework IOKit your_app.c -isysroot /var/theos/sdks/iPhoneos_whatever_sdk_you_have -o output

这应该编译。在没有 isysroot 和 /var 的 mac 上相同...

如果您在 xcode 中尝试,请确保驱动程序可以在沙箱内运行并包含 iokit 标头

:D

于 2018-12-17T23:21:34.340 回答
0

据我所知,没有(非越狱)iOS 的命令行工具之类的东西,尽管您可以使用应用程序中的 NSLog 输出到日志。此外,Apple 的 iOS 工具链使用 clang (llvm),尽管 'gcc' 命令通常别名为 clang。获取脚本最简单的方法是在 Xcode 中创建一个测试项目,构建它并查看构建日志。这向您显示了使用哪些参数运行的所有命令。

于 2016-03-31T11:31:41.770 回答