zoukankan      html  css  js  c++  java
  • 将程序转换成本地代码防止反编译

    将程序转换成本地代码也是一种防止反编译的有效方法。

    因为本地代码往往难以被反编译。

    开发人员可以选择将整个应用程序转换成本地代码,也可以选择关键模块转换。

    如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。

    当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性。

    对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作。

    不过对于一些关键的模块,有时这种方案往往是必要的。

    为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名。

    在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改。

    如果签名检查通过,则调用相关JNI方法。

     1 package Com.TableTest;
     2 
     3 
     4 class SimpleDotCom {
     5 
     6     int[] locationCells;
     7 
     8     int numOfHits = 0;
     9 
    10 
    11     public void setLocationCells(int[] locs){
    12 
    13         locationCells = locs;
    14 }
    15 
    16     public String checkYourself(String StringGuess) {
    17 
    18         int guess = Integer.parseInt(StringGuess);
    19 
    20         String result = "miss";
    21 
    22         for (int cell:locationCells){
    23 
    24             if (guess == cell){
    25 
    26                 result = "hit";
    27 
    28                 numOfHits++;
    29 
    30                 break;
    31 
    32             }
    33 
    34         }
    35 
    36         if(numOfHits == locationCells.length){
    37 
    38             result = "kill";
    39 
    40         }
    41 
    42         System.out.println(result);
    43 
    44         return result;
    45 
    46     }
    47 }
    48 
    49 
    50 public class TableText_14 {
    51  
    52     public static void main(String[] args){
    53 
    54         //初始化一个SimpleDotCom对象
    55 
    56         SimpleDotCom dot = new SimpleDotCom();
    57 
    58         //创建带有dot com位置的数组
    59 
    60         int[] locations = {2,3,4};
    61 
    62         //调用dot com 的setter
    63 
    64         dot.setLocationCells(locations);
    65 
    66         //假的猜测
    67 
    68         String userGuess = "2";
    69 
    70         //调用被测方法并传入假的数据
    71 
    72         dot.checkYourself(userGuess);  
    73  
    74     }
    75 
    76 }
  • 相关阅读:
    windows下Graphviz安装及入门教程
    安装配置Xdebug模块详解
    Git结合tar自动打升级包
    git stash命令详解
    redis启动出错Creating Server TCP listening socket 127.0.0.1:6379: bind: No error(转)
    航司二字码
    BeanCreationException: Error creating bean with name 'classPathFileSystemWatcher'之解决办法
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext之解决办法
    Postman测试后台使用@RequestBody接收参数的坑
    Idea必知必会
  • 原文地址:https://www.cnblogs.com/borter/p/9388506.html
Copyright © 2011-2022 走看看