反編譯難度
⑴ goto語句放在程序中是否可增加反編譯難度c++
goto語句放在程序中是否可增加反編譯難度c++。
沒有這種說法吧,反編譯的技術難度本身並不在於goto語句吧。
只是goto正常開發都不建議使用,會影響對於程序的閱讀理解。所以說增加反編譯難度也有一定道理。
⑵ autoit v3 編寫的軟體反編譯,難度頗大,希望大大幫忙
雖然我以前是這么回答的,但實話說,不藉助autoit自帶的反編譯工具,也是有辦法反編譯的。
但網路知道平台上估計沒這種高人,或者說,有這種能力的高人一般沒時間泡在網路知道上。
所以,在這里提問是枉然的。建議去AutoIt中文論壇或官方論壇碰碰運氣吧,畢竟更專業一些。
不過話又說回來,就算去那裡也未必有人肯花時間幫你反編譯的(真的很費時間和精力)。一來防止引發版權問題,二來人家主要是來技術交流的,不是純粹為分數而幫人幹活的。所以,這個問題要得到解決,真的不容易。只能祝你好運了 ;-)
⑶ 易語言程序反編譯
無論怎樣的高手,即使反編譯也不會對軟體進行完全的編譯,其實如果你懂得易語言不如對程序進行模仿來的實在,先對程序進行研究,對功能的實現做到心裡有數然後用易語言自己做個和這個程序功能一致的程序反而更好,你說呢?
⑷ 如何讓C++寫的dll不被反編譯
簡單回答:
1、理論上不能保證程序不被反編譯。
2、一些加殼軟體可以做到加大被反編譯的難度,迫使操作者先解殼才能做反編譯,但同時會降低程序的運行效率。
3、當前的技術條件下,一般而言,反編譯出的「源代碼」一般而言並不能作學習,參考的源代碼,多數情況下只能用於分析區部片斷分析,主要用於破解或小范圍類修改。
4、一些簡單的加殼軟體:ASPACK、UPX、PECompact等,如果想嘗試,自個去搜索下載後試試。加殼後的軟體還有可能被某些殺軟當成惡意軟體。
5、這也正是很多對安全要求高的系統使用「三層架構」(類似訪問網頁/網站)的原因。因為在三層架構中,核心軟體、數據不被用戶直接接觸。
************以下是相關知識,有耐心可看看************
一、關於反編譯與破解。
1、以當前的技術來說,理論上,所有的程序都存在被反編譯的可能。
2、但是反編譯出來的代碼並不一定能被技術不高的人看懂,因為反編譯出來的「源代碼」與編寫者寫出的原代碼在80%以上是不同的。這是因為反編譯的原理是根據機器碼(或中間碼),讓機算機進行反向生成高級語言,而不是找出編寫者原有的代碼,找出原有的代碼是不可能的。反編譯出來的代碼在可理解性、可閱讀性上,一般而言是非常差的。
3、但是,這並不代碼反編譯出來的「源代碼」沒有價值,對於內行來說,分析反編譯出來的代碼中的某些特定片段,就可以對程序進行破解,找出程序的關鍵點、口令、數據來源等等。因為破壞總是比建設要容易,分析局部比規劃全局要容易得多。
4、如果考慮到被反編譯將關鍵代碼進行特殊處理的話,可能加大相關的難度,比如將特定的字元串分成多個字串在程序中存儲,或是進行加密後存儲,在使用時合成/生成,不用時即時在內存中清除等等……。
5、反編譯後對關鍵部分的定位往往是根據字元串來進行的,比如在用戶沒有注冊時,跳出一行對話,告訴用戶「請注冊後再使用」,破解者就會在反編譯後追查這個字串所在,然後查到這個字串對應的變數與地址,再追查調用這個變數或地址的代碼,然後再延伸查到什麼情況下調用「調用這個變數或地址的代碼」,最後,設定跳過語句。這就是最典型的破解注冊的方法。破解完再將修改了的「源代碼」進行編譯,或是根據「源代碼」直接修正程序中對應的代碼,OK,破解版正式完成。
二、關於加殼。
1、理論上,同樣,沒有破解不了的殼。
2、但是有些加殼軟體使用了一些特別的方法,使得破解殼的難度變得非常難,技術不夠的朋友很難下手,比如將原程序代碼拆分、變型、植入自校驗等等技術。
3、但加殼軟體同樣是程序,它自身就存在被反編的可能,加了殼可以類比成,在一個木箱外面再加個保險櫃。但千萬別以為保險櫃就一定是保險的,面對各種技術開鎖、暴力開箱,再強的保險櫃也只能是加大難度而已。
4、越復雜的加殼,就會使得程序運行時效率降得越低,這是必然的,因為原本只關注目標任務的程序現在還要時時提防著被提取、被監測。
⑸ .NET下所有語言都可以輕松被反編譯嗎
JVM和CLR下面的所有語言都是先編譯為位元組碼的,相對於傳統的C++,容易被反編譯容易被反編譯的不僅僅是C#,還有Java,F#,VB.net,事實上,C#已經可以通過native編譯直接生成機器碼運行了(.net native技術)這樣一定程度上可以提高反編譯的難度
⑹ 反匯編逆向難學嗎,入門難嗎
反匯編是工具來做的,比如IDA,OD,你說的這個應該是逆向和破解技術。
逆向其實是有它的難度在裡面的,要跟匯編打交道,很多時候破解要涉及加密演算法,驅動保護還有殼。可以這么說,逆向技術本身不算太難,但是難的是逆向防禦技術。
因為逆向在windows平台上的通用性而且不是太難學,導致了商業軟體為了追求安全性,產生了很多逆向分析的對抗技術,來增強自己的安全性。畢竟自己辛辛苦苦花錢花時間搞出來的東西,被別人兩下學了去,怎麼想怎麼不舒服。
這裡面,加殼鄙人不了解,不做評論。驅動保護就是在內核里搞風搞雨,入手的門檻還是比較高的。所以學逆向不難,花時間花功夫多練手。但是想把你高超的逆向功力應用到實際的商業產品上,驅動和殼是你必須面對的東西,去研究這兩者會花費大量精力。
AGP論壇站長,反游戲保護和windows內核技術大牛A總聽說是高二就開始研究內核技術了,lz如果花時間,也是能學成的,畢竟有成功案例在了。有點基礎想擼驅動,還可以找A總報名參加下付費培訓。。。廣告已打, 心滿意足。
⑺ vb exe程序能夠反編譯到何種程度
反編譯到代碼的程度。和你自己的源代碼的差別就是一些sub/function的名字。
想增加反編譯後解讀難度的話,多加一些sub/function,多加一些goto。
⑻ 我寫的C/S程序怎麼輕易就被人反編譯了
簡單回答: 1、理論上不能保證程序不被反編譯。 2、一些加殼軟體可以做到加大被反編譯的難度,迫使操作者先解殼才能做反編譯,但同時會降低程序的運行效率。 3、當前的技術條件下,一般而言,反編譯出的「源代碼」一般而言並不能作學習,參考的源
⑼ 易語言模塊有什麼辦法防止被反編譯嗎
易語言論壇中的方法:防止模塊被反編譯的有效方法:
請在模塊中建立一個或多個窗口,將其"可視"屬性設置為假,窗口上放一些隨機類型的組件(盡量不要用常用組件),重要數據分散放在這些組件的屬性裡面,模塊中的代碼動態載入這些窗口,從這些組件屬性中讀入相關數據使用.
原理: 由於易語言有相當多類型的組件,而每個組件的屬性數據保存格式都不一樣,模塊反編譯想把每種組件中的屬性數據反編譯出來具有相當的難度,所以數據放在組件屬性裡面是安全的.
個人方法:你可以把模塊轉化成動態鏈接庫DLL,這樣就不容易反編譯了
⑽ app可以被反編譯到什麼程度
Android APK中的Java代碼可以被反編譯到什麼程度主要看APK的加密程度。
第一種情況:無混淆無加密無加殼。
直接利用Dex2jar和JD-GUI可把源碼從APK里摳出來,代碼邏輯清晰,基本上做到可復用,只是資源文件的引用需要計算一下。
第二種情況:混淆。
通常是利用Proguard做的防護。因為是對jar做的不可逆混淆(除非有mapping),因此不能還原成原來的代碼。但是代碼結構,代碼邏輯一致,只要花長時間對代碼進行梳理一樣可找准核心代碼,解密方法跟第一種一致。
第三種情況:加密。
這里以DexGuard為例。對於這種代碼加密的方法,在程序運行中必定會進行解密,只要抽出它解密的邏輯便可。PS:我自己做過DexGuard的解密,如果用Dex2jar反編譯看的話邏輯是不對的,一定要從Smali代碼看。後來發現網上已經有人做了。
解密的腳本:A look inside Dexguard
第四種情況:加殼。
這種情況跟第三種類似。無論你怎麼加殼,運行的時候必定是Dalvik可識別的Odex代碼,建議直接在內存里mp出來。這里推薦Xpose的ZjDroid。
加固可以在一定程度上保護自己核心代碼演算法,提高破解/盜版/二次打包的難度,緩解代碼注入/動態調試/內存注入攻擊等。
目前市面上有很多第三方加固的平台, 如果新應用發布前需要掃描或者加固的話,可以先試試免費的,例如騰訊御安全,建議自己先去掃描測試下。