thể trùng lặp:
hiding strings in Obfuscated codeObfuscation: ẩn giá trị mã hóa cứng trong java
Tôi đang cố gắng để che giấu một chút một số Strings tĩnh của ứng dụng của tôi để làm cho nó khó khăn hơn để dịch ngược , cách này giống như các hằng số như các thuật toán thuật toán tên khó tìm hơn trong mã bị xáo trộn.
tôi đã xem xét những thứ như:
String CONCAT= "concat"+"string";
String RAW_STRING= "raw_string";
String FROM_BYTES=new String("from_bytes".getBytes());
String FROM_CHARS=new String(new char[]{'f','r','o','m','_','c','h','a','r','s'});
String FROM_CHAR2=new String(new char[]{102,114,111,109,95,99,104,97,114,115,95,50});
Và hai lựa chọn cuối cùng có vẻ là "đậm" hơn so với tùy chọn nguyên nhưng tôi tưởng tượng có những cách tốt hơn để làm điều này.
Làm cách nào để cải thiện điều này? Cảm ơn
Tôi chưa bao giờ được lập trình cho Android, tuy nhiên tôi không thể thấy điểm của câu hỏi. Nếu người dùng không biết cách dịch ngược, chỉ có thể đọc mã thông qua Notepad, bạn chỉ cần đặt một số tên thuật toán chưa sử dụng, và người đó sẽ không biết cái nào thực sự có liên quan. Nếu anh ta biết cách dịch ngược, thì không có sự can thiệp nào có thể ngăn không cho anh ta thay thế cuộc gọi thư viện (tôi đoán bạn sử dụng một thư viện nổi tiếng với tên phương thức nổi tiếng để khởi tạo mật mã) với một Hệ thống. out.println. – ignis
Tôi đang ẩn các loại dây như vậy bằng chức năng gradle đơn giản. Nó chỉ bảo vệ khỏi mắt thường, nhưng trong mọi trường hợp, nó tốt hơn không có gì: https://gist.github.com/shomeser/68f4fe360be0edac95e4 –