国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

美團網(wǎng)站界面設(shè)計超級外鏈吧外鏈代發(fā)

美團網(wǎng)站界面設(shè)計,超級外鏈吧外鏈代發(fā),wordpress做的著名網(wǎng)站,定制小程序多少錢文章目錄 前言問題代碼混淆存在的問題Java類文件加密存在的問題虛擬化保護存在的問題AOT編譯存在的問題 Java應用的打包混淆器類加載與類加密Bootstrap Class LoaderExtension Class LoaderSystem Class Loader自定義ClassLoaderprotector4j 加殼采用Golang打包Java程序xjar 參…

文章目錄

    • 前言
    • 問題
      • 代碼混淆存在的問題
      • Java類文件加密存在的問題
      • 虛擬化保護存在的問題
      • AOT編譯存在的問題
    • Java應用的打包
    • 混淆器
    • 類加載與類加密
      • Bootstrap Class Loader
      • Extension Class Loader
      • System Class Loader
      • 自定義ClassLoader
      • protector4j
    • 加殼
    • 采用Golang打包Java程序
      • xjar
    • 參考鏈接

前言

自從Java誕生以來,其字節(jié)碼容易被反編譯的問題就為程序員所詬病。由此也誕生了不少Java混淆工具和加殼軟件。

最關(guān)鍵的一個問題,采用import語句的類,能否被URLClassLoader加載機制替換掉?也就是,一個jar包中,如果我將一部分class移走,這部分class采用自定制的ClassLoader加載,是否可行?如果可行,那我將這部分class通過golang寫的server輸出,就差不多解決了一半的被破解問題。

問題

代碼混淆存在的問題

由于JVM字節(jié)碼的高語義性,使得期極為容易被分析與閱讀,使用動態(tài)調(diào)試的方式可以很容易分析出其運行邏輯,而動態(tài)調(diào)試工具的編寫并不是一件十分復雜的事情,因此混淆并不是一種可靠的保護方案。

Java類文件加密存在的問題

由于JVM附加機制的存在,所有未脫離普通JVM運行的所謂加密代碼,都可以使用附加工具輕松讀取,因此這是一種最無效的保護方案。
普通的JVM都帶有附著自制,用戶可以使用jhsdb這類工具,附著到JVM進程,對其內(nèi)存數(shù)據(jù)進行查看和分析,并且這些內(nèi)存數(shù)據(jù)還是按照源文件中的數(shù)據(jù)結(jié)構(gòu)被妥善組織好的,這也可以理解為JVM自帶的一種后門機制。下面這篇文章介紹了如何使用JVM附著機制讀取并保存內(nèi)存中的類文件信息。https://protector4j.com/articles/cracking-encrypted-java-applications-jhsdb/

除了可以使用JDK自帶的jhsdb工具之外,還可以使用阿里巴巴的Arthas對運行中的Java進程進行分析。

虛擬化保護存在的問題

虛擬化保護是強度最高的一種代碼保護方式,但是由于期對性能的嚴重影響,因此無法應用到程序中的全部代碼,而只能保護關(guān)鍵代碼,其他代碼仍然有暴露的風險,而以其他部分代碼來切入口,就可以獲取到虛擬化部分代碼的功能信息。

AOT編譯存在的問題

AOT編譯配置難度大,編譯難度大,編譯失敗概率高,即使編譯成功,代碼邏輯也僅是由原來的字節(jié)碼表示轉(zhuǎn)換為機器代碼表示,其本身的運行邏輯仍然存在,并沒有進行特別的保護,如果能夠了解其本身的編譯與運行機制,仍然能夠逆向還原出可讀性的代碼。

Java應用的打包

  • exe4j
  • launch4j
  • JSmooth: 已經(jīng)過時了
  • jpackage:JDK自帶的打包工具
  • Installer工具:Inno Setup、NSIS(https://sourceforge.net/projects/nsis/)

混淆器

代碼混淆是最早應用于Java代碼保護的方案,也是一個最直接的方案。代碼混淆通常有下面四種方法:

  • 包名、類名、變量名轉(zhuǎn)換
  • 控制結(jié)構(gòu)改變,如控制流平坦化、添加不可變謂詞等
  • 字符串混淆或加密
  • 添加無用代碼

代碼混淆可以大幅降低反編譯代碼的可讀性,提升靜態(tài)分析的難度,但是無論如何進行代碼混淆,程序的運行邏輯是不會改變的。
JVM字節(jié)碼上是一種語義很清晰明確,且極為閱讀的中間代碼,對于被混淆的class文件,即使無法還原成可讀的Java源代碼,仍然可以在字節(jié)碼層面進行分析,由于Java字節(jié)碼的高語義性,這個過程其實還是比較容易的。

下面是一些常見的開源的和商業(yè)的混淆工具:

  • ProGuard is a popular open-source GPL-licenced bytecode optimizer and file shrinker for Java and Kotlin. It claims to make these applications up to 90% smaller and 20% faster. It also provides some minimal obfuscation by renaming classes, fields and methods. Android Studio uses ProGuard automatically. ProGuard,一款shrinker(壓縮:檢測和刪除沒有使用的類,字段,方法和屬性), optimizer(優(yōu)化:對字節(jié)碼進行優(yōu)化,并且移除無用指令), obfuscator(混淆:使用a,b,c等無意義的名稱,對類,字段和方法進行重命名), and preverifier(審核:在Java平臺上對處理后的代碼進行預檢)工具??s短進程檢測并刪去未運用的類、字段、辦法和特點。優(yōu)化器 進程優(yōu)化字節(jié)碼并刪去未運用的指令?;祀s進程運用簡短無意義的稱號重命名剩余的類、字段和辦法。最后的預驗證進程將預驗證信息增加到類中,這是 Java Micro Edition 和 Java 6 及更高版別所必需的。
  • yGuard is another commonly used open-source obfuscator.
  • ZKM(Zelix KlassMaster) is a full featured commercial Java obfuscator. It shrinks and obfuscates both code and string constants.
  • Allatori is a commercial second generation Java obfuscator. 第二代Java混淆器。所謂第二代混淆器,不僅僅能進行字段混淆,還能實現(xiàn)流混淆。
  • DashO Java and Android Obfuscator is a commercial second generation Java obfuscator. DashO-Pro是第三代的Java混淆器(obfuscator)、壓縮機(compactor)、優(yōu)化工具和水印工具(watermarker)。它能有效保護和防止Java程序被反編譯和篡改,是Java代碼保護的理想選擇。DashO-Pro除了為Java代碼提供領(lǐng)先的代碼保護外,它還將應用程序的大小縮減到原文件的70%。如果您正在找尋為您的Java程序提供反編譯保護、提高運行速度和減少程序體積的辦法,那么我們推薦您使用DashO。DashO是一個Java和Android的混用程序,它提供企業(yè)級應用的加固和屏蔽,大大降低了知識產(chǎn)權(quán)盜竊、數(shù)據(jù)盜竊、盜版和篡改的風險。分層混淆,加密,水印,自動失效,反調(diào)試,反篡改,反仿真器,反掛鉤,反根設(shè)備解決方案,為世界各地的應用程序提供保護。
  • Stringer Java Obfuscation Toolkit is a commercial Java obfuscator supporting up to Java 13.

There is an easy-to-read introductory article with extra links on bytecode obfuscation on the OWASP Foundation’s website. Another good introductory article on obfuscation techniques is on the DashO website.

名稱License地址
yGuardLGPLhttp://www.yworks.com/products/yguard
ProGuardGPLv2https://www.guardsquare.com/en/proguard
Facebook ProGuard分支GPLv2https://github.com/facebook/proguard
DashOCommercialhttps://www.preemptive.com/products/dasho
AllatoriCommercialhttp://www.allatori.com
StringerCommercialhttps://jfxstore.com
Java AntidecompilerCommercialhttp://www.bisguard.com/help/java/
Zelix KlassMasterCommercialhttp://www.zelix.com

類加載與類加密

先來了解一下Java類加載器的基本常識。三種調(diào)用會導致JVM加載一個類: new一個對象、Class.forName()、classLoader.loadClass(),而在文件頭import語句只是聲明,不會導致類加載。

Bootstrap Class Loader

Bootstrap class loader serves as the parent of all the other ClassLoader instances. This bootstrap class loader is part of the core JVM and is written in native code. 不同平臺有不同的實現(xiàn)。

It’s mainly responsible for loading JDK internal classes, typically rt.jar and other core libraries located in the $JAVA_HOME/jre/lib directory.

Extension Class Loader

The extension class loader is a child of the bootstrap class loader, and takes care of loading the extensions of the standard core Java classes so that they’re available to all applications running on the platform.

The extension class loader loads from the JDK extensions directory, usually the $JAVA_HOME/lib/ext directory, or any other directory mentioned in the java.ext.dirs system property.

System Class Loader

The system or application class loader, on the other hand, takes care of loading all the application level classes into the JVM. It loads files found in the classpath environment variable, -classpath, or -cp command line option. It’s also a child of the extensions class loader.

自定義ClassLoader

java -Djava.system.class.loader
=com.test.YourCustomClassLoader com.test.YourMainClass

protector4j

Protector4J可以通過加密類來保護您的java源代碼,它通過修改JVM創(chuàng)建了一個自定義的本地ClassLoader。Java類由AES加密,并在本地ClassLoader中解密。并且它還引入了一些機制來提高破解的難度。

加密您的代碼可以保護您的知識產(chǎn)權(quán),并大大提高您的應用程序的安全性。它使得IP盜竊、代碼篡改和安全漏洞的發(fā)現(xiàn)涉及到昂貴的逆向工程努力,而實際上任何人都可以下載并運行一個免費的Java反編譯器。

Protector4J也可以幫助您為Windows,Linux,macOS創(chuàng)建您的Java App的可執(zhí)行包裝器。

VLINX Protector4J is a tool to prevent Java applications from decompilation. Protector4J provides a custom native ClassLoader by modifying the JVM. The Java classes are encrypted by AES and decrypted in the native ClassLoader.

幾個特點:

  • 私有壓縮文檔格式: JARX
  • 自定義JRE僅支持加載JARX文件
  • 禁用JVM的遠程附加機制
  • 二進制代碼級別的保護

JARX文件是protector4j專有存檔文件格式,它使用與Zip相同的Deflate壓縮算法,并使用AES加密算法來加密數(shù)據(jù)。
JARX文件的結(jié)構(gòu)與所有存檔文件類型相似,由條目組成,這些條目以我們的專有方式組織,條目的名稱和內(nèi)容使用AES算法進行加密。
由于JARX文件格式并未公開,且條目的內(nèi)容和名稱已加密,且沒有工具可以直接解壓和JARX文件,因此使用JARX文件不僅可以保護您的類文件的內(nèi)容,還可以保護整個JAR文件的結(jié)構(gòu),即外界甚至無法獲取您的類的名稱,這將使其更難以破解。

加殼

https://gitee.com/chejiangyi/jar-protect

在這里插入圖片描述

在這里插入圖片描述

采用Golang打包Java程序

Golang
binary-go就是其中一個合適的選擇

go get -u github.com/samuelngs/binary-go

安裝完之后,我們執(zhí)行

binary -dir ./[靜態(tài)文件位置] -out binary

就會產(chǎn)生出許多的go文件,默認它是以20M為一個進行分拆的。

package mainimport (_ "embed""fmt""os""os/exec"
)//go:embed binary
var f []bytefunc main() {_ = os.WriteFile("foobar", f, 0755)out, _ := exec.Command("./foobar").Output()fmt.Printf("Output: %s\n", out)
}
cmd := exec.Command("java", "-jar", "Astro.jar", "1924 12 12 23 23 23 74.34 34.67")
fmt.Println(cmd.Start())

xjar

xjar的原理是將jar包加密,然后執(zhí)行的時候再加密,而密鑰存放在外部的go可執(zhí)行文件中。加密和解密都是由java程序完成。

參考鏈接

  • https://github.com/segator/jbinary
  • go-jdk:Run JVM-based code in Go efficiently
  • https://github.com/core-lib/xjar
  • https://github.com/lqs1848/AllatoriCrack.git
  • https://yworks.github.io/yGuard/
  • https://protector4j.com/
  • https://blog.csdn.net/weixin_35569158/article/details/114567793
http://aloenet.com.cn/news/40201.html

相關(guān)文章:

  • 網(wǎng)站開發(fā)排期表模板重慶seo小z博客
  • wordpress獲取登錄用戶的名字seo搜索引擎優(yōu)化視頻
  • 江華網(wǎng)站建設(shè)域名大全
  • 天津網(wǎng)站在哪里建設(shè)seo診斷
  • wordpress 回收站在哪電銷系統(tǒng)軟件排名
  • 做cpa用什么類型的網(wǎng)站好百度 營銷推廣是做什么的
  • 人與狗做的電影網(wǎng)站百度網(wǎng)盤怎么用
  • 許昌專業(yè)做網(wǎng)站公司百度站長工具怎么查排名
  • 深圳哪里做網(wǎng)站好廣州番禺發(fā)布網(wǎng)
  • 圖書館網(wǎng)站建設(shè)教程電商營銷
  • 查網(wǎng)站排名搜索引擎入口google
  • 網(wǎng)站備案必須是企業(yè)嗎外鏈網(wǎng)盤源碼
  • 德州網(wǎng)站優(yōu)化淘寶攝影培訓推薦
  • 珠海做網(wǎng)站方案一元手游平臺app
  • php網(wǎng)站怎么注入網(wǎng)站排名怎么搜索靠前
  • 汽車網(wǎng)站建設(shè)方案英語培訓機構(gòu)
  • 成都做一個小企業(yè)網(wǎng)站需要多少錢2023網(wǎng)站分享
  • 綿陽網(wǎng)站排名網(wǎng)站優(yōu)化推廣費用
  • 專門做任務的網(wǎng)站嗎怎樣創(chuàng)建網(wǎng)站平臺
  • 大鵬網(wǎng)站建設(shè)韶關(guān)seo
  • wap購物網(wǎng)站源碼公司如何在百度宣傳
  • 佛山建站佛山網(wǎng)頁設(shè)計seo是一種利用搜索引擎的
  • 網(wǎng)上做調(diào)查問卷的網(wǎng)站最近熱點新聞事件2023
  • bbs網(wǎng)站模板怎么創(chuàng)作自己的網(wǎng)站
  • 云南熱搜科技做網(wǎng)站不給源碼如何做網(wǎng)站seo
  • 濟南建設(shè)銀行網(wǎng)站杭州網(wǎng)站定制
  • 業(yè)務外包服務公司朝陽seo排名
  • 最好的javascript視頻seo技巧是什么
  • 網(wǎng)站開發(fā)公司成本是什么愛站權(quán)重
  • 國際購物平臺都有哪些重慶百度快速優(yōu)化