我发现我可以通过执行以下操作来破坏我的iOS应用:
至今:
我很快就这样做了,所以我很好奇,如果它可能是我的应用程序中的一个错误(以及该错误可能是什么),或者如果我正在重启它,跳板正在杀死我的应用程序?
调试器报告我的应用程序收到"SIGKILL"信号,所以我倾向于认为这实际上是在实际杀死进程的延迟,但我不想忽视我可能犯的错误.
鉴于我不能在调试器之外重复它,它对我来说是低优先级,但我仍然希望更好地理解它,特别是如果它指向我的应用程序中的错误.
我需要编写我认为是OS X的显示驱动程序.就像那些"将你的iPad用作第二台显示器!" 应用程序,但我需要编写OS X软件,它将在OS X上注册另一个显示器,并给我像素数据,以便我可以将它用于我的各种需求.
我从哪里开始?我已经阅读了关于IOKit的内容,但是我不太明白我需要做些什么来告诉OS X我是一个监视器,然后是像素数据的样子.
我将要阅读的类/标题/等的一些链接也可以,但如果有人这样做并且知道详细信息,那将非常有帮助.
此外,这必须是内核扩展,还是可以编写一个用户空间IOKit驱动程序,为OS X提供第二个监视器?
最后,要清楚,我只想要将像素数据发送到第二个监视器(镜像或扩展) - 我实际上并没有连接监视器或I/O设备.
我正在为一个客户开发一个内核驱动程序,该客户端将其出售给将其出售给最终客户的客户.最终客户不仅在合同中被移除了3次,而且还有数千英里和十几个时区.因此,我无法直接访问他们的测试环境.
在我正在测试的几台机器和几个不同版本的OS X上,一切都正常测试,我无法复制它们似乎遇到的一些问题.
我怀疑他们可能正在测试hackintosh,虽然我正在从他们的测试设置正确的角度处理他们报告的问题,但我想通过在下一个版本中添加代码来怀疑我的怀疑这将帮助我了解它们是否在真正的Apple硬件上运行.
现在我正在收集系统配置文件,kernel.log,console.log和USB配置文件.如果答案可以在其中一个中找到,那就更好了,但我假设它不会那么简单.
同样,我在用户空间和内核中都有代码,因此我可以完全访问该机器,但我更喜欢用户空间解决方案.用户空间代码以root身份运行,并在Apple徽标显示之前开始在启动时运行.虽然支持多个版本的OS X会很好,但10.6.8是我需要针对此案例定位的特定版本.
在处理嵌入式API(主要是通信协议)时,我经常在C中使用的快捷方式允许我编辑枚举数组,并在此之后正确设置其他所有大小:
typedef enum {
errortype1,
errortype2,
...
errortypeN,
ERROR_TYPE_MAX
} ErrorTypeList;
int errorcounts[ERROR_TYPE_MAX]; // Create array to hold a counter for each error type
Run Code Online (Sandbox Code Playgroud)
只要我在ERROR_TYPE_MAX之前添加新的错误类型,那么我可以在其他地方使用该值来为我提供枚举的大小.
但是,在C#中,这不能正常工作:
enum ErrorTypeList {
errortype1,
errortype2,
...
errortypeN,
ERROR_TYPE_MAX
};
int errorcounts[ErrorTypeList.ERROR_TYPE_MAX]; // Create array to hold a counter for each error type
Run Code Online (Sandbox Code Playgroud)
这种用法介绍错误Array size cannot be specified in a variable declaration提示使用new.
是在运行时定义数组(via new)我唯一的选择,还是有一种方法可以在没有新的情况下实现这一点,因为枚举的大小在编译后不会改变?
有没有替代这种类型的枚举大小模式更适合c#?
与一些同事讨论了实时任务的最佳调度策略,但不是每个人都对常见或有用的调度策略有很好的理解.
为了您的答案,请选择一个策略并详细介绍它,而不是提供一些策略的一些信息.如果你有什么东西可以添加到别人的描述而且它很简短,添加一个评论而不是一个新的答案(如果它很长或有用,或者只是一个更好的描述,那么请使用答案)
目前的策略:
-亚当
我正在修改现有的安全代码.规范很清楚,有示例代码,但我不是加密专家.实际上,示例代码中有一个免责声明,实际上是"不要逐字使用此代码".
在审核我要修改的代码(这应该是完整的功能)时,我遇到了这个用于生成挑战的小宝石:
static uint16 randomSeed;
...
uint16 GetRandomValue(void)
{
return randomSeed++;/* This is not a good example of very random generation :o) */
}
Run Code Online (Sandbox Code Playgroud)
当然,我立即做的第一件事就是将它传递到办公室,这样我们都可以大笑.
生成此代码的程序员知道它不是一个好的算法(如评论所示),但我不认为他们理解安全隐患.他们甚至懒得在主循环中调用它,所以它至少会变成一个自由运行的计数器 - 仍然不理想,但超出此范围的世界.
但是,我知道我生产的代码同样会导致一个真正的安全大师轻笑或震惊.
-亚当
所以我在linux下使用蜂窝调制解调器运行PPP.我正在编写的程序在发送任何数据之前需要知道链接是否处于活动状态.
我有什么选择可以检查
另外,重启它的最佳方法是什么 - 我希望程序控制它何时启动和停止,所以我认为init.d不合适.使用system()似乎没有给出PID,还有其他选项fork()和一堆exec??()电话吗?
C on Linux on ARM(使用buildroot进行自定义分发).
我已经将LIBPNG和ZLIB合并到我的C软件中用于微控制器项目,因为它们非常自由的许可证允许这样使用而不需要我透露任何代码(它与BSD/MIT/APACHE非常相似,但没有归属要求).
我想看一下使用有损图像压缩来节省内存.我发现的JPEG代码是GPL,LGPL或者不是C.我不能使用LGPL,因为这仍然需要我让用户用更新或不同的版本替换库,这是不可能的项目.
我希望你知道一个合适的有损图像压缩库.它不一定是JPEG(我控制编码和解码)但它必须是C,并且最多BSD许可或类似(归属很好).
-亚当
c ×2
kernel ×2
macos ×2
algorithm ×1
arrays ×1
c# ×1
compression ×1
cryptography ×1
embedded ×1
enums ×1
gif ×1
graphics ×1
hackintosh ×1
image ×1
iokit ×1
ios ×1
ios4 ×1
ipad ×1
iphone ×1
jpeg ×1
linux ×1
networking ×1
new-operator ×1
objective-c ×1
passwords ×1
php ×1
ppp ×1
prng ×1
scheduling ×1
security ×1
testing ×1