【技术实现步骤摘要】
【国外来华专利技术】本专利技术涉及一种,并且特别涉及一种保护可执行程序 的方法,它禁止对所述程序施行逆向工程和/或窜改所述程序。软件保护的方法通常被定位在禁止软件的非法复制和分发。软件保 护的一种形式涉及在软件应用程序程序中嵌入保护码。 一执行所述软件 应用程序程序,所述保护码就确定试图执行所述应用程序的计算机是否 被授权这样做。不幸地,这种软件保护形式容易受到排错程序和反汇编 程序的攻击。例如,所述软件应用程序可以被反汇编并且保护码的位置 从汇编码中被识别。 一旦所述保护码的位置被知道,附加码可以被插入 到所述软件应用程序程序来作废所述保护码或者欺骗所迷保护码使它 相信所述计算机被授权执行所述软件应用程序。保护软件应用程序程序防止逆向工程的方法包括加密所述应用程 序的一个或多个片段。然而,这需要所述应用程序的源代码的知识,因 为,不是所述应用程序的全部片段都适合于加密。例如,指向被加密的 代码内的 一个位置的任何直接转移或调用指令在执行期间将必然导致 致命的错误。另外,如果没有考虑正被加密代码的位置,则紧靠在被加 密代码前面的指令可能被错误地执行。而且,在解密期间,寄存器的内 容很可 ...
【技术保护点】
一种保护可执行程序的方法,所述方法包括:接收所述可执行程序的拷贝,所述可执行程序包括被安排成多个功能块的可执行的指令;接收一个与所述可执行程序有关的排错数据库,所述排错数据库存储所述可执行程序内的功能块的位置;从所述 排错数据库识别所述可执行程序内的功能块的位置;以及将保护码插入到所述可执行程序中,所述保护码重写所述功能块的至少一部分,其中,所述功能块的执行导致所述保护码将被执行,并且所述保护码的执行完成一种操作以及执行所述被保护码重写的 所述功能块的至少一部分的拷贝。
【技术特征摘要】
【国外来华专利技术】US 2005-2-11 60/652,0191.一种保护可执行程序的方法,所述方法包括接收所述可执行程序的拷贝,所述可执行程序包括被安排成多个功能块的可执行的指令;接收一个与所述可执行程序有关的排错数据库,所述排错数据库存储所述可执行程序内的功能块的位置;从所述排错数据库识别所述可执行程序内的功能块的位置;以及将保护码插入到所述可执行程序中,所述保护码重写所述功能块的至少一部分,其中,所述功能块的执行导致所述保护码将被执行,并且所述保护码的执行完成一种操作以及执行所述被保护码重写的所述功能块的至少一部分的拷贝。2. 根据权利要求l中所述的方法,其中,插入保护码包括 编码功能块的至少一部分以便产生被编码的指令; 将一个解码例行程序插入到所述可执行的程序中;以及用对所述解码例行程序的调用指令并且用所述被编码的指令来替 换所述可执行程序的功能块的至少一部分,其中,所述解码例行程序包括用于解码所述被编码的指令和用于执 行所述被解码的指令的可执行的指令。3. 根据权利要求2中所述的方法,其中,编码包括使用一种加密密 钥来加密所述功能块的至少 一部分,并且解码包括使用 一种解密密钥来 解密所迷被编码的指令。4. 根据权利要求3中所述的方法,其中,所述加密密钥从所述可执 行程序的代码片段得出,所述解码例行程序从所述代码片段得出所述解 密密钥,并且在没有所述代码片段的恶化出现的情况下,所述被编码的 指令被成功地解密。5. 根据权利要求4中所述的方法,其中,所述加密密钥从一个另外 的功能块的指令得出,所述另外的功能块正被编码,并且所述解码例行 程序解码所述另外的功能块并且从所述另外的功能块的指令得出所述 解密钥,以及在所述另外的功能块被成功地解密的情况下,所述被编码 的指令被成功地解密。6. 根据权利要求2-5任何一个中所述的方法,其中,至少一个功能 块包括一个到一个另外的功能块内的位置的调用或转移指令,所述排错 数据库存储所述可执行程序的每个调用或转移指令指向的位置,并且编码一个功能块的步骤包括选择一个功能块的至少一部分以用于编码;从所述排错数据库的内容识别指向所选择的至少 一部分功能块内 的位置的转移和调用指令;以及在没有转移和调用指令被识别的情况下,编码所述被选择的功能块 的至少一部分。7. 根椐前述任何一个权利要求中所述的方法,其中,插入保护码 包括编码多个功能块的每一个的至少一部分以便产生多个被编码的指 令的片段,每个片段对应于一个相应的功能块;将一个解码例行程序插入到所述可执行程序中;以及 用对所述解码例行程序的调用指令并且用一个相应的被编码指令的片段替换所述多个功能块中的每一个的至少一部分,其中,所述解码例行程序包括用于解码和执行被编码的指令的可执行的指令。8. 根据前述任何一个权利要求中所述的方法,其中,插入保护码 包括用第一编码算法编码第一功能块的至少一部分以便产生第一被编 码的指令;用第二编码算法编码第二功能块的至少一部分以便产生第二被编 码的指令;将第一解码例行程序插入到所述可执行的程序中; 将第二解码例行程序插入到所述可执行的程序中;用对所迷第一解码例行程序的调用指令并且用所述第一被编码的 指令来替换所述第一功能块的至少一部分;以及用对所述第二解码例行程序的调用指令并且用所述第二被编码的 指令来替换所述可执行程序的第二功能块的至少 一部分,其中,所述第一解码例行程序包括用于解码所述第一被编码的指令 和用于执行所述第一被解码的指令的可执行的指令,并且所述第二解码 例行程序包括用于解码所述第二被编码的指令和用于执行所述第二被 解码的指令的可执行的指令。9. 根据权利要求8中所述的方法,其中,所述第一编码例行程序和 第二编码例行程序是不同的。10. 根据权利要求2到9任何一个中所述的方法,其中,所述方法还 包括分解所述功能块并且从被分解的代码选择一个或多个指令,并且其 中编码所述功能块的至少一部分包括编码与被选择的指令对应的功能 块的一个或多个片段。11. 根据权利要求2到10任何一个中所述的方法,其中,在被冗余 指令占据的位置所述解码例行程序被插入到所述可执行的程序中。12. 根据权利要求ll中所述的方法,其中,所述排错数据库存储每 个功能块的起始地址和关于每个功能块的结束地址的信息,并且所述方 法包括比较一个功能块的结束地址和一个邻近数椐库的起始地址以便 识别在所述两个功能块之间的冗余指令。13. 根据权利要求ll中所述的方法,其中,所述方法包括分解一个 功能块,并且分析被分解的代码以便识别所述功能块内的冗余指令。14. 根据前述任何一个权利要求中所述的方法,其中,所述功能块 包括至少一个具有一个调用地址的调用指令,并且所述方法还包括将一个检验例行程序插入到所述可执行的程序中;以及 修改所述调用指令的调用地址,从而使在调用所述调用地址之前所 述检验例行程序被执行。15. 根据权利要求l中所述的方法,其中所述排错数据库存储所述 可执行程序内的调用指令的位置,并且插入保护码包括将一个检验例行程序插入到所述可执行的程序中; 从所述排错数据库识别所述可执行程序内的调用指令的位置,所述调用指令具有一个调用地址;以及修改所述调用指令的调用地址,从而使在调用所述调用地址之前所述检验例行程序被执行。16. 根据权利要求14或15中所述的方法,其中,所述检验例行程序 包括用于检测所述可执行程序的恶化的指令。17....
【专利技术属性】
技术研发人员:JA萨法,
申请(专利权)人:辛普雷克斯梅杰有限公司,
类型:发明
国别省市:MY[马来西亚]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。