2011-12-13 73 views

回答

3

顧名思義,Google Native Client使用本機代碼。 這意味着,您的代碼被編譯,就像桌面上的平均可執行二進制文件一樣。它可以反彙編,但源代碼無法恢復。

1

本地客戶端意味着您正在客戶端上運行本機代碼。在大多數情況下,您將在客戶端上運行i386或amd64機器語言。如果您使用的是編譯語言,那麼您的用戶無法直接恢復它。用戶可以反彙編你的軟件來恢復你的代碼的一些信息,但他們不能恢復原始源代碼(除非它是彙編語言)。從反彙編的二進制文件重寫一段軟件很困難,但如果時間充足,通常可以完成。這真的取決於你對使用你的代碼的人有多麼偏執。

1

本機客戶端的結構要求,使可靠的反彙編,以便它可以執行靜態分析可以使一些代碼混淆技術無法使用。這些通常與惡意軟件用於惡意軟件分析相同的技術相同,即如果通過不同的偏移量解碼,則對指令流有兩種有效的解釋。但是,Native Client會提供一種自修改代碼,因爲它具有JIT支持。例如,Mono使用即時代碼生成,只要JIT代碼繼續符合NaCl安全要求,就可以使用相同的接口來創建混淆代碼。

使用JIT接口當然會使您的代碼不可移植到其他CPU體系結構。