python交付如何不被反編譯
用Cython直接把python代碼編成二進制,然後再編一個外殼程序,連在一起加密就行。
『貳』 python反編譯遇到的新問題,求解
這個後綴應該算是除了python的py代碼外,遇到最多的一種文件類型了。雖然python被普遍認為是一種解釋性語言,但誰說它就不能被編譯後執行呢?python通過compile生成的pyc文件,然後由python的虛擬機執行。相對於py文件來說,編譯成pyc本質上和py沒有太大區別,只是對於這個模塊的載入速度提高了,並沒有提高代碼的執行速度,通常情況下不用主動去編譯pyc文件。
『叄』 python寫的程序,轉成了exe文件,怎麼進行反編譯為python源碼
你解開執行文件。如果是單個的文件,則執行它的時候在臨時目錄里可以找到解開的包。
在解開後的目錄中找到pyc文件,然後利用反編譯工具就可以將pyc反編譯成py文件。
但是有些程序是做了加密的。它們的pyc是它們重新寫python編譯器後自定義的加密格式,用通常的辦法無法解開。
需要在內存里反編譯。
內存里反編譯這個技術目前還沒有公開,不過難度應該不大,有興趣你可以自己試著按python規范寫一個。
『肆』 如何防止代碼被反編譯
由於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 *;
}
『伍』 最近用 Python 寫了個工具,有沒有什麼辦法防止被反編譯
python要反編譯
你需要放到別的語言里
『陸』 用Python2.7.1寫的小程序可以反編譯得到它的源代碼嗎
python是不能反編譯的,因為得到了一個python的程序,就是得到了它的源代碼。
python是解釋性語言,沒有編譯這一步驟,和c語言和java語言是不一樣的
『柒』 如何防止編譯後的VFP可執行程序不被反編譯
不可能的,編譯與反編譯永遠在較量中前進,道高一尺魔高一丈。只能說不被「一般人」反編譯,除了基本的加殼加密等方式,還有個狠的,就是在程序中設置「邏輯炸彈」(自己設計),當某一個進程或程序段被反復跟蹤、、時該炸彈就會自動「引爆」使整個程序崩潰,而無法繼續反編譯。當然了也有牛人會「拆彈」了,呵呵,畢竟是少數中的少數
計算機界有句名言「沒有解不開的密碼!」和這道理差不多。
以上是我個人理解
『捌』 如何防止class被反編譯,の頤塹鬧恫
可以使用代碼混淆是對Class文件進行重新組織和處理,使得處理後的代碼與處理前代碼完成相同的功能(語義)。但是混淆後的代碼很難被反編譯,即反編譯後得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語義。
從理論上來說,如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研製反混淆的工具。但是從實際情況來看,由於混淆技術的多元化發展,混淆理論的成熟,經過混淆的Java代碼還是能夠很好地防止反編譯。
app開發完後,最好做一下掃描和加固,應用掃描可以通過靜態代碼分析、動態數據跟蹤,定位出風險代碼,同時監控敏感數據的異常行為。
加固可以在一定程度上保護自己核心代碼演算法,提高破解/盜版/二次打包的難度,緩解代碼注入/動態調試/內存注入攻擊等。
目前市面上有很多第三方加固的平台, 如果新應用發布前需要掃描或者加固的話,可以先試試免費的,例如騰訊御安全,建議自己先去掃描測試下。
『玖』 python源碼編程成pyc後,怎麼防止反編譯
無法防止反編譯,但可以混淆,讓你即使反編譯了,也看不懂語法
下面一段源碼
sd=1
defseed(s):
globalsd
sd=s
defrandn(n):
globalsd
sd=(sd*1103515245+12345)&0x7fffffff
returnsd%n
defmain():
seed(11)
foriinxrange(4):
printrandn(313)
if__name__=='__main__':
main()
混淆後
oo000=1
if9-9:Ii.o0o00Oo0O-iI11I1II1I1I
defoooo(s):
globaloo000
oo000=s
if11-11:ii1I-ooO0OO000o
defii11i(n):
globaloo000
oo000=(oo000*1103515245+12345)&0x7fffffff
returnoo000%n
if66-66:iIiI*iIiiiI1IiI1I1*o0OoOoOO00
defI11i():
oooo(11)
forO0Oinxrange(4):
printii11i(313)
if78-78:i11ii11iIi11i.oOoO0oo0OOOo+IiiI/Iii1ii1II11i
if__name__=='__main__':
I11i()#
『拾』 python如何防止反編譯
Python 編譯生成 pyc 僅僅為了提升載入速度,並不是為了防止破解,反編譯後和原來一模一樣。pyinstaller,py2exe,只是把 pyc 打個包,同樣很弱。代碼混淆也只能增加看懂代碼的難度,但並不能防止破解。所以最為穩妥的辦法只有修改Python解釋器,對源代碼進行加密,解釋器載入源代碼時再解密,這種方法雖然可以防止破解,但給自己帶來麻煩不說,發布程序是需要打包自己修改後的解釋器,相當麻煩。