當前位置:首頁 » 編程軟體 » 怎麼防止別人的反編譯

怎麼防止別人的反編譯

發布時間: 2023-09-04 01:58:23

㈠ 如何防止代碼被反編譯

針對代碼反編譯,推薦使用CBS賽博鎖,通過把安全容器內嵌到操作系統中,對容器內的應用和數據進行加鎖,程序和數據在容器內運行,實現最後一米數據安全,防止核心數據被泄露,防止伺服器終端中病毒,防止反編譯,反破解。

㈡ android app怎麼防止反編譯

APK在PC上面就被看作一個壓縮格式文件,在手機上面它就算一個可執行格式文件。兩種格式對它的讀取要求也有區別,所以說利用這個區別來實現偽加密。對PC端來講偽加密的APK沒法被解包無法被反編譯,但是對android系統來說它完全不會影響正常的安裝運行(對4.2以前的系統)。

偽加密的原理:讀取APK的位元組,找到連續4位位元組標記為」P K 01 02」的後第5位位元組,如果是0表示不加密,如果是1就表示加密(偽加密就強行改成1 反偽加密就是把1改成0就可以了)。
2
偽加密前和偽加密後的對比圖如下:
偽加密前:

3
偽加密後:

END
使用第三方平台加密

步驟如下:
登錄/注冊→上傳APK→等待系統加密→完成後下載APK→給APK簽名→完成!

2
愛加密作為移動安全行業的第三方平台,為Android APP移動應用提供專業的加固保護方案,包括DEX文件保護、資源文件保護、XML主配文件保護、防二次打包保護、so文件保護、內存保護、高級混淆等,全方位保護Android App,防止被反編譯、破解等,維護廣大開發者朋友的切身利益!

㈢ 怎樣防反編譯怎樣防止應用被逆向分析

朋友你好,很高興為你解答問題。

我的回答和另外一位朋友的回答差不多,代碼混淆(proguard)也可以使用偽加密(apk本身是zip,對zip末尾加位元組的方式防止apktool逆向,但是該方法在電腦上有些手機助手無法識別apk文件,手機上可以識別)。還有就是可以交給幾維安全APP加密平台,不需要什麼技術要求。同時也可以在XML文件查看有沒有添加東西。

防反編譯,幾維安全-領先的應用加固服務商,兼容性高,0損耗,安全性高,免費試用。防反編譯,幾維安全提供防逆向,防篡改,防調試,防二次打包等一站式應用加固方案。

㈣ C#怎樣防止反編譯

我使用的方法是利用加殼工具:virboxProtectorStandalone。直接進行加殼。高級混淆、虛擬化代碼、智能壓縮等加密策略。如果要授權控制,可使用許可版本的virboxProtector。

未經加殼保護的 ILspy 反編譯效果如下:

public int add(int a, int b){
return a + b;}public int div(int a, int b){
return a / b;}public int mul(int a, int b){
return a * b;}public int sub(int a, int b){
return a - b;}

解決方案:

深思自主研發了為 C# .net 語言做保護的外殼(Virbox Protector)。將C# .net 編譯成的執行程序(.exe),動態庫(.dll)直接拖入加殼工具即可完成保護操作,十分方便。並且在效果上已經完全看不到源碼中的邏輯。

加密後的效果

public int add(int a, int b){
return (int)dm.dynamic_method((object)this, System.Reflection.MethodBase.GetCurrentMethod(), 16416u, 21, 16384u, 32u, 31516u, 5).Invoke(this, new object[]
{
this,
a,
b
});}
public int div(int a, int b){
return (int)dm.dynamic_method((object)this, System.Reflection.MethodBase.GetCurrentMethod(), 16956u, 21, 16924u, 32u, 31516u, 2).Invoke(this, new object[]
{
this,
a,
b
});}
public int mul(int a, int b){
return (int)dm.dynamic_method((object)this, System.Reflection.MethodBase.GetCurrentMethod(), 16776u, 21, 16744u, 32u, 31516u, 3).Invoke(this, new object[]
{
this,
a,
b
});}
public int sub(int a, int b){
return (int)dm.dynamic_method((object)this, System.Reflection.MethodBase.GetCurrentMethod(), 16596u, 21, 16564u, 32u, 31516u, 4).Invoke(this, new object[]
{
this,
a,
b
});}

架構支持

IIS 服務架構的後台邏輯 DLL 文件

windows PC 應用程序 EXE 文件

windows PC 應用程序動態庫 DLL 文件

UG等第三方繪圖工具使用的 DLL 文件

Unity3d 編譯使用的 DLL 文件

㈤ 如何防止代碼被反編譯

由於apk是Android虛擬機載入的,它有一定的規范,加密apk後Dalvik無法識別apk了。完全避免是不可能的,總有人能夠破解你的代碼。但是有幾種方式來提高被反編譯取代碼的難度。
1 關鍵代碼使用jni調用本地代碼,用c或者c++編寫,因此相對比較難於反編譯

2 混淆java代碼。混淆是不改變代碼邏輯的情況下,增加無用代碼,或者重命名,使反編譯後的源代碼難於看懂。 網上開源的java代碼混淆工具較多,一般是用ant的方式來編譯的。

1 . 在工程文件project.properties中加入下proguard.config=proguard.cfg , 如下所示:
target=android-8
proguard.config=proguard.cfg
Eclipse會通過此配置在工程目錄生成proguard.cfg文件

2 . 生成keystore (如已有可直接利用)
按照下面的命令行 在D:\Program Files\Java\jdk1.6.0_07\bin>目錄下,輸入keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore
參數意義:-validity主要是證書的有效期,寫100000天;空格,退格鍵 都算密碼。
命令執行後會在D:\Program Files\Java\jdk1.6.0_07\bin>目錄下生成 android.keystore文件。

3. 在Eclipce的操作
File -> Export -> Export Android Application -> Select project -> Using the existing keystore , and input password -> select the destination APK file

經過混淆後的源代碼,原先的類名和方法名會被類似a,b,c。。。的字元所替換,混淆的原理其實也就是類名和方法名的映射。
但4大組件並沒有混淆(所有在清單文件定義的組件不能被混淆),因為系統需要通過清單文件來查找和運行應用程序。

proguard.cfg 文件代碼解讀
-optimizationpasses 5 ->設置混淆的壓縮比率 0 ~ 7
-dontusemixedcaseclassnames -> Aa aA
- ->如果應用程序引入的有jar包,並且想混淆jar包裡面的class
-dontpreverify
-verbose ->混淆後生產映射文件 map 類名->轉化後類名的映射

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* ->混淆採用的演算法.

-keep public class * extends android.app.Activity ->所有activity的子類不要去混淆
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
native <methods>; -> 所有native的方法不能去混淆.
}

-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
-->某些構造方法不能去混淆
}

-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

-keepclassmembers enum * { -> 枚舉類不能去混淆.
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable { -> aidl文件不能去混淆.
public static final android.os.Parcelable$Creator *;
}

㈥ 如何有效防止C#編寫的DLL被反編譯

為防止這類反向工程的威脅,最有效的辦法是模糊。
模糊工具運用各種手段達到這一目標,但主要的途徑是讓變數名字不再具有指示其作用的能力、加密字元串和文字、插入各種欺騙指令使反編譯得到的代碼不可再編譯。
例子:
對未經模糊處理的代碼執行反向工程:
Private Sub CalcPayroll(ByVal employeeGroup As SpecialList)
While employeeGroup.HasMore
employee = employeeGroup.GetNext(True)
employee.updateSalary
DistributeCheck(employee)
End While
End Sub

同樣的代碼,經過模糊處理再執行反向工程:
Private Sub a(ByVal b As a)
While b.a
a = b.a(True)
a.a
a(a)
End While
End Sub

顯然,兩段代碼的處理邏輯相同。但是,要說清楚第二段代碼到底在做些什麼極其困難,甚至要判斷它正在訪問哪些方法、哪些變數也很困難。
這種改變變數名稱的功能是可配置的,例如,假設正在構造一個DLL,可以要求不改動API,有趣的是,這一處理過程顯然只是簡單地把大量變數的名稱簡縮成單個字元,但獲得了非常好的模糊效果。

㈦ C#如何防止被別人反編譯

C#
編寫的代碼通過VS編譯器生成
dll

exe
,很容易被一些反編譯工具查看到源碼或對源碼進行修改。
為防止代碼被反編譯或被篡改,我們可以進行一定的防範措施。但不能杜絕,因為DotNet編寫代碼運行必須編譯成IL
中間語言,IL是很規則,同時也很好反編譯。
反編譯防範措施:
設置項目代碼反匯編屬性
混淆
方法一:防止
Ildasm.exe(MSIL
反匯編程序)
反匯編程序集
方法很簡單在項目文件AssemblyInfo.cs中增加SuppressIldasm屬性。
當項目中增加SuppressIldasm屬性後在使用ildasm.exe反編譯代碼,會提示:"受保護的模塊
--
無法進行反匯編"
ildasm.exe
讀取項目中包含
SuppressIldasm
屬性就不對此程序集進行反編譯。但ILSyp,Reflector等反編譯工具針對程序集設置SuppressIldasm屬性置之不理,一樣可以反編譯源碼。
缺點:
可見SuppressIldasm
屬性只針對ildasm.exe工具起效果,同時也能刪除ildasm.exe工具的此項限制。參考:《去掉ILDasm的SuppressIldasmAttribute限制》
方法二:混淆
混淆原理:將VS編譯出的文件(exe

dll)通過ildasm對文件進行重命名,字元串加密,移動等方式將原始代碼打亂。這種方式比較常見。
VS2013
自帶混淆工具:工具-->PreEmptive
Dotfuscator
and
Analytics
但VS2013自帶Dotfuscator
5.5
需購買激活才能使用全部功能。目前網路提供
DotfuscatorPro
4.9
破解版版本下載。
打開
DotfuscatorPro
4.9
主界面
Settings->Global
Options
全局配置
常用功能配置:Disable
String
Encryption=NO
啟用字元串加密
選擇需混淆C#編譯代碼(dll

exe)
其中Library不要勾選,否則有些類、變數等等不會混淆;
Rename
重命名配置
常用功能配置:
勾選
=
use
enhanced
overload
inction
使用增強模式
重命名方案
Renaming
Scheme
=
Unprintable
(不可列印字元,即亂碼),也可以選擇其他如小寫字母、大寫字元、數字的方式。
String
Encryption
字元串加密
勾選需要加密字元串文件(exe

dll)
可根據各自需求可進行其他相關配置。(如:control
flow,Output,Setting
->Build
Settings,Settings
-->
Project
Properties等)
最後生成混淆文件
Build
Project。
Build
Project
生成混淆項目錯誤:
Could
not
find
a
compatible
version
of
ildasm
to
run
on
assembly
C:Users***.exe.??This
assembly
was
originally
built
with
.NET
Framework
v4.0.30319.
Build
Error.
處理方法:
ILASM_v4.0.30319
=
C:WindowsMicrosoft.NETFrameworkv4.0.30319ilasm.exe
ILDASM_v4.0.30319
=
C:Program
Files
(x86)Microsoft
SDKsWindowsv8.1AinNETFX
4.5.1
Toolsildasm.exe
[安裝VS版本不同對應目錄會有所變化]
混淆代碼對比
未使用混淆工具,反編譯出的源碼:
使用混淆工具,反編譯出的源碼:
效果很明顯,很難看出反編譯代碼所寫的真正邏輯。
缺點:
C#代碼通過混淆工具生成後,增加了很多轉換過程。這使得反編譯工具無法很直觀看到源碼真正邏輯。但源碼代碼過多轉換會使軟體本身運行效率降低,甚至會出現報錯情況。

㈧ 怎麼防止Java開發出來的程序被別人反編譯

防止Java開發出來的程序被別人反編譯有很多種方法,下面給你介紹幾種:

1、隔離Java程序

最簡單的方法就是讓用戶不能夠訪問到Java Class程序,這種方法是最根本的方法,具體實現有多種方式。例如,開發人員可以將關鍵的Java Class放在伺服器端,客戶端通過訪問伺服器的相關介面來獲得服務,而不是直接訪問Class文件。這樣黑客就沒有辦法反編譯Class文件。目前,通過介面提供服務的標准和協議也越來越多,例如 HTTP、Web Service、RPC等。但是有很多應用都不適合這種保護方式,例如對於單機運行的程序就無法隔離Java程序。

2、對Class文件進行加密

為了防止Class文件被直接反編譯,許多開發人員將一些關鍵的Class文件進行加密,例如對注冊碼、序列號管理相關的類等。在使用這些被加密的類之前,程序首先需要對這些類進行解密,而後再將這些類裝載到JVM當中。這些類的解密可以由硬體完成,也可以使用軟體完成。

3、轉換成本地代碼

將程序轉換成本地代碼也是一種防止反編譯的有效方法。因為本地代碼往往難以被反編譯。開發人員可以選擇將整個應用程序轉換成本地代碼,也可以選擇關鍵模塊轉換。如果僅僅轉換關鍵部分模塊,Java程序在使用這些模塊時,需要使用JNI技術進行調用。

4、代碼混淆

代碼混淆是對Class文件進行重新組織和處理,使得處理後的代碼與處理前代碼完成相同的功能(語義)。但是混淆後的代碼很難被反編譯,即反編譯後得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語義。從理論上來說,黑客如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研製反混淆的工具。但是從實際情況來看,由於混淆技術的多元化發展,混淆理論的成熟,經過混淆的Java代碼還是能夠很好地防止反編譯。

不同保護技術比較希望能給大家帶來參考:

熱點內容
vuerouter源碼 發布:2024-11-20 06:23:59 瀏覽:397
配置線是什麼 發布:2024-11-20 06:23:25 瀏覽:753
微信安卓系統如何應用分身 發布:2024-11-20 06:23:23 瀏覽:830
農行自助重置密碼在哪裡 發布:2024-11-20 06:22:44 瀏覽:624
氣壓的演算法 發布:2024-11-20 06:10:35 瀏覽:667
無法找到存儲系統 發布:2024-11-20 06:06:48 瀏覽:377
android固定屏幕 發布:2024-11-20 05:42:53 瀏覽:564
網頁升級訪問每天正常更新 發布:2024-11-20 05:42:47 瀏覽:359
深圳哪裡可以學習安卓 發布:2024-11-20 05:34:03 瀏覽:648
判斷ftp路徑存在不存在 發布:2024-11-20 05:33:15 瀏覽:869