2016-08-03 41 views
0

Kann ich info.plist in einem Kext verstecken? oder kann ich info.plist dynamisch für einen Kext erstellen?Kann ich info.plist in einem Kext verstecken? oder kann ich info.plist dynamisch erstellen?

Ich habe ein codeless kext, wo es nur info.plist hat, jedoch möchte ich info.plist nicht jedem zugänglich machen, damit sie einfach nur meine Codes kopieren können ... also dachte ich mir, ob ich die info.plist verstecken sollte oder dynamisch info.plist erstellen, während der Treiber den gesamten Kext lädt oder verschlüsselt?

+0

Kurz gesagt: nein. Aber wenn Sie uns sagen, was Sie damit wirklich erreichen wollen, können wir vielleicht einen alternativen Vorschlag machen. – pmdj

+0

Danke, pmdj. Ich habe einen Code-Kext, wo es nur info.plist hat, aber ich möchte info.plist nicht jedem zugänglich machen, damit sie einfach meine Codes kopieren können ... also dachte ich mir, entweder die info.plist zu verstecken oder dynamisch Informationen zu erstellen .plist, während der Treiber den gesamten Kext lädt oder verschlüsselt? Vielen Dank. – CastAway1970

+0

@ CastAway1970: Es ist besser, ** diese Informationen in die Frage selbst ** hinzuzufügen. Beachten Sie, dass der * Antwort-Post * nur eine Antwort auf die * Frage * geben kann und keine * Kommentare * beantworten kann. – Tsyvarev

Antwort

0

Sie können die Info.plist nicht selbst verschlüsseln/verschleiern. Es ist jedoch Teil des Codesignierungsprozesses und der Anforderung, daher ist es nicht einfach modifizierbar.

Sie geben dies nicht explizit an, aber ich nehme an, dass im I/O Kit Personality-Wörterbuch eine Eigenschaft versteckt ist, die Sie ausblenden möchten? Diese Eigenschaften können entsprechend aus dem Code, insbesondere in der init()-Funktion Ihrer Treiberklasse, festgelegt werden, es sei denn, sie sind für den Abgleich erforderlich. Beachten Sie, dass alle Eigenschaften, die Sie festgelegt haben, in der I/O Kit-Registrierung zur Laufzeit vollständig lesbar sind. Daher vermute ich, dass dies nicht der Fall ist.

Wenn die Informationen, die Sie ausblenden möchten, Teil der übereinstimmenden Bedingungen sind, z. B. wenn Sie versuchen, Produkt-IDs bisher unbekannter Geräte zu verbergen, können Sie diese abhängig von den übereinstimmenden Regeln Ihrer Treiberfamilie implementieren Diese Logik in Code in der probe() Funktion. Ich würde die übereinstimmenden Regeln in der Info.plist nicht zu breit machen, oder Ihr Kext wird jedes Mal geladen, z. Ein Provider mit der angegebenen Provider-Klasse erscheint. Dies ist unnötig ineffizient.

Offensichtlich ist Ihr Kext in beiden Fällen nicht mehr codeless, aber Sie können nach Herzenslust im C++/C/Assembly-Code verschleiern.

Wenn Sie eine spezifischere Antwort wünschen, müssen Sie genauer auf Ihre Frage eingehen.