⑴ VB6可以被很多軟體反編譯,那學VB還有何用
理論上,任何軟體都可以被反編譯,只是時間問題。與匯編、C語言比較VB6屬於比較難反編譯的了,如果不是做商業軟體,學一種編程語言的作用是能方便工作,提高效率。
VB6編譯器確實過時了,而且VB6有自身不足,但是一般軟體還是可以做的,而且比VB.net要小很多,VB.net的優點是很多東西都是現成的,比如菜單,可以直接設置出各種效果來,用VB6就要掌握API和自繪技術,或者借用第三方控制項。但是通過這樣可以提高自己的編程水平,缺點是開發效率低。
⑵ c語言反編譯要學多久
掌握C語言反編譯技術並非一日之功,需要投入一定的時間和精力。首先,初學者需掌握C語言的基本語法和編程技巧,這通常需要幾個月的時間來熟練掌握。其次,學習反編譯技術需要深入了解底層機器碼和匯編語言,同時理解二進制文件結構和逆向工程的基本原理。這個過程可能需要數月至數年的時間,且要求學習者具備扎實的計算機基礎知識和高度的耐心。
實踐經驗對於提高反編譯技術至關重要。通過經常進行實際的反編譯練習和項目,學習者可以逐步提高自己的技術水平。反編譯過程不僅需要理論知識,更需要實際操作中的經驗積累。因此,不斷實踐是提升反編譯技能的關鍵。
總體而言,學習C語言反編譯技術可能需要幾年的時間。這期間,學習者需不斷學習新知識、積累實踐經驗,並保持耐心和毅力。雖然這一過程可能漫長,但只要堅持不懈,最終能夠掌握反編譯技術。
反編譯C語言是一項復雜且需要長期投入的工作。學習者需要從基礎開始,逐步深入學習,直至能夠熟練掌握反編譯技術。在這個過程中,理論學習和實踐操作同樣重要,兩者相輔相成,缺一不可。
反編譯技術的應用場景廣泛,不僅限於破解軟體,還可以用於分析和優化代碼。掌握這一技術不僅能幫助學習者更好地理解底層代碼邏輯,還能提高軟體開發和維護的能力。
⑶ android軟體安全與逆向分析的書名
本書由淺入深、循序漸進地講解了Android 系統的軟體安全、逆向分析與加密解密技術。包括Android軟體逆向分析和系統安全方面的必備知識及概念、如何靜態分析Android 軟體、如何動態調試Android 軟體、Android 軟體的破解與反破解技術的探討,以及對典型Android 病毒的全面剖析。
本書適合所有Android 應用開發者、Android 系統開發工程師、Android 系統安全工作者閱讀學習。 豐生強(網名非蟲)
Android軟體安全專家。看雪論壇Android安全版版主;安卓巴士開發交流版版主。
對Android軟體與系統安全有狂熱的愛好和獨到的見解,對Android系統的全部源代碼進行過深入地研究和分析。逆向分析實戰經驗豐富。
在國內信息安全雜志上發表過多篇有價值的軟體安全文章,目前就職於國內某Android開發企業,常年混跡於看雪論壇(ID非蟲)。
作者郵箱:[email protected]
願與國內安全愛好者共同交流與探討安全技術。 第1章 Android程序分析環境搭建11.1 Windows分析環境搭建11.1.1 安裝JDK11.1.2 安裝Android SDK31.1.3 安裝Android NDK51.1.4 Eclipse集成開發環境61.1.5 安裝CDT、ADT插件61.1.6 創建Android Virtual Device81.1.7 使用到的工具91.2 Linux分析環境搭建91.2.1 本書的Linux環境91.2.2 安裝JDK91.2.3 在Ubuntu上安裝Android SDK101.2.4 在Ubuntu上安裝Android NDK111.2.5 在Ubuntu上安裝Eclipse集成開發環境121.2.6 在Ubuntu上安裝CDT、ADT插件131.2.7 創建Android Virtual Device131.2.8 使用到的工具151.3 本章小結15第2章 如何分析Android程序162.1 編寫第一個Android程序162.1.1 使用Eclipse創建Android工程162.1.2 編譯生成APK文件192.2 破解第一個程序202.2.1 如何動手?202.2.2 反編譯APK文件202.2.3 分析APK文件212.2.4 修改Smali文件代碼262.2.5 重新編譯APK文件並簽名262.2.6 安裝測試272.3 本章小結28第3章 進入Android Dalvik虛擬機293.1 Dalvik虛擬機的特點——掌握Android程序的運行原理293.1.1 Dalvik虛擬機概述293.1.2 Dalvik虛擬機與java虛擬機的區別293.1.3 Dalvik虛擬機是如何執行程序的343.1.4 關於Dalvik虛擬機JIT(即時編譯)363.2 Dalvik匯編語言基礎為分析Android程序做准備373.2.1 Dalvik指令格式373.2.2 DEX文件反匯編工具393.2.3 了解Dalvik寄存器403.2.4 兩種不同的寄存器表示方法——v命名法與p命名法423.2.5 Dalvik位元組碼的類型、方法與欄位表示方法433.3 Dalvik指令集443.3.1 指令特點453.3.2 空操作指令453.3.3 數據操作指令463.3.4 返回指令463.3.5 數據定義指令463.3.6 鎖指令473.3.7 實例操作指令473.3.8 數組操作指令483.3.9 異常指令483.3.10 跳轉指令483.3.11 比較指令493.3.12 欄位操作指令503.3.13 方法調用指令503.3.14 數據轉換指令513.3.15 數據運算指令513.4 Dalvik指令集練習——寫一個Dalvik版的Hello World523.4.1 編寫smali文件523.4.2 編譯smali文件543.4.3 測試運行543.5 本章小結55第4章 Android可執行文件564.1 Android程序的生成步驟564.2 Android程序的安裝流程594.3 dex文件格式664.3.1 dex文件中的數據結構664.3.2 dex文件整體結構684.3.3 dex文件結構分析714.4 odex文件格式804.4.1 如何生成odex文件804.4.2 odex文件整體結構814.4.3 odex文件結構分析834.5 dex文件的驗證與優化工具dexopt的工作過程884.6 Android應用程序另類破解方法914.7 本章小結93第5章 靜態分析Android程序945.1 什麼是靜態分析945.2 快速定位Android程序的關鍵代碼945.2.1 反編譯apk程序945.2.2 程序的主Activity955.2.3 需重點關注的Application類955.2.4 如何定位關鍵代碼——六種方法965.3 smali文件格式975.4 Android程序中的類1005.4.1 內部類1005.4.2 監聽器1025.4.3 註解類1055.4.4 自動生成的類1085.5 閱讀反編譯的smali代碼1105.5.1 循環語句1105.5.2 switch分支語句1155.5.3 try/catch語句1215.6 使用IDA Pro靜態分析Android程序1275.6.1 IDA Pro對Android的支持1275.6.2 如何操作1285.6.3 定位關鍵代碼——使用IDA Pro進行破解的實例1325.7 惡意軟體分析工具包——Androguard1355.7.1 Androguard的安裝與配置1355.7.2 Androguard的使用方法1375.7.3 使用Androguard配合Gephi進行靜態分析1445.7.4 使用androlyze.py進行靜態分析1485.8 其他靜態分析工具1525.9 閱讀反編譯的Java代碼1525.9.1 使用dex2jar生成jar文件1525.9.2 使用jd-gui查看jar文件的源碼1535.10 集成分析環境——santoku1545.11 本章小結156第6章 基於Android的ARM匯編語言基礎——逆向原生!1576.1 Android與ARM處理器1576.1.1 ARM處理器架構概述1576.1.2 ARM處理器家族1586.1.3 Android支持的處理器架構1596.2 原生程序與ARM匯編語言——逆向你的原生Hello ARM1606.2.1 原生程序逆向初步1606.2.2 原生程序的生成過程1626.2.3 必須了解的ARM知識1646.3 ARM匯編語言程序結構1666.3.1 完整的ARM匯編程序1666.3.2 處理器架構定義1676.3.3 段定義1686.3.4 注釋與標號1696.3.5 匯編器指令1696.3.6 子程序與參數傳遞1706.4 ARM處理器定址方式1706.4.1 立即定址1706.4.2 寄存器定址1716.4.3 寄存器移位定址1716.4.4 寄存器間接定址1716.4.5 基址定址1716.4.6 多寄存器定址1716.4.7 堆棧定址1726.4.8 塊拷貝定址1726.4.9 相對定址1726.5 ARM與Thumb指令集1736.5.1 指令格式1736.5.2 跳轉指令1746.5.3 存儲器訪問指令1756.5.4 數據處理指令1776.5.5 其他指令1846.6 用於多媒體編程與浮點計算的NEON與VFP指令集1856.7 本章小結186第7章 Android NDK程序逆向分析1877.1 Android中的原生程序1877.1.1 編寫一個例子程序1877.1.2 如何編譯原生程序1887.2 原生程序的啟動流程分析1947.2.1 原生程序的入口函數1947.2.2 main函數究竟何時被執行1987.3 原生文件格式1997.4 原生C程序逆向分析2007.4.1 原生程序的分析方法2007.4.2 for循環語句反匯編代碼的特點2047.4.3 if...else分支語句反匯編代碼的特點2087.4.4 while循環語句反匯編代碼的特點2117.4.5 switch分支語句反匯編代碼的特點2157.4.6 原生程序的編譯時優化2187.5 原生C++程序逆向分析2227.5.1 C++類的逆向2227.5.2 Android NDK對C++特性的支持2257.5.3 靜態鏈接STL與動態鏈接STL的代碼區別2277.6 Android NDK JNI API逆向分析2327.6.1 Android NDK提供了哪些函數2327.6.2 如何靜態分析Android NDK程序2337.7 本章小結235第8章 動態調試Android程序2368.1 Android動態調試支持2368.2 DDMS的使用2378.2.1 如何啟動DDMS2378.2.2 使用LogCat查看調試信息2388.3 定位關鍵代碼2408.3.1 代碼注入法——讓程序自己吐出注冊碼2408.3.2 棧跟蹤法2448.3.3 Method Profiling2478.4 使用AndBug調試Android程序2508.4.1 安裝AndBug2518.4.2 使用AndBug2518.5 使用IDA Pro調試Android原生程序2548.5.1 調試Android原生程序2558.5.2 調試Android原生動態鏈接庫2568.6 使用gdb調試Android原生程序2608.6.1 編譯gdb與gdbserver2608.6.2 如何調試2628.7 本章小結264第9章 Android軟體的破解技術2659.1 試用版軟體2659.1.1 試用版軟體的種類2659.1.2 實例破解——針對授權KEY方式的破解2659.2 序列號保護2719.3 網路驗證2729.3.1 網路驗證保護思路2729.3.2 實例破解——針對網路驗證方式的破解2739.4 In-app Billing(應用內付費)2779.4.1 In-app Billing原理2779.4.2 In-app Billing破解方法2809.5 Google Play License保護2819.5.1 Google Play License保護機制2819.5.2 實例破解——針對Google Play License方式的破解2839.6 重啟驗證2849.6.1 重啟驗證保護思路2859.6.2 實例破解——針對重啟驗證方式的破解2859.7 如何破解其他類型的Android程序2969.7.1 Mono for Android開發的程序及其破解方法2969.7.2 Qt for Android開發的程序及其破解方法3019.8 本章小結309第10章 Android程序的反破解技術31010.1 對抗反編譯31010.1.1 如何對抗反編譯工具31010.1.2 對抗dex2jar31110.2 對抗靜態分析31210.2.1 代碼混淆技術31210.2.2 NDK保護31510.2.3 外殼保護31610.3 對抗動態調試31610.3.1 檢測調試器31610.3.2 檢測模擬器31710.4 防止重編譯31810.4.1 檢查簽名31810.4.2 校驗保護31910.5 本章小結320第11章 Android系統攻擊與防範32111.1 Android系統安全概述32111.2 手機ROOT帶來的危害32111.2.1 為什麼要ROOT手機32111.2.2 手機ROOT後帶來的安全隱患32211.2.3 Android手機ROOT原理32211.3 Android許可權攻擊32911.3.1 Android許可權檢查機制32911.3.2 串謀許可權攻擊33311.3.3 許可權攻擊檢測33611.4 Android組件安全33911.4.1 Activity安全及Activity劫持演示34011.4.2 Broadcast Receiver 安全34311.4.3 Service安全34511.4.4 Content Provider安全34611.5 數據安全34711.5.1 外部存儲安全34711.5.2 內部存儲安全34811.5.3 數據通信安全35011.6 ROM安全35111.6.1 ROM的種類35211.6.2 ROM的定製過程35211.6.3 定製ROM的安全隱患35911.6.4 如何防範36011.7 本章小結361第12章 DroidKongFu變種病毒實例分析36212.1 DroidKongFu病毒介紹36212.2 配置病毒分析環境36312.3 病毒執行狀態分析36412.3.1 使用APIMonitor初步分析36512.3.2 使用DroidBox動態分析36912.3.3 其他動態分析工具37312.4 病毒代碼逆向分析37612.4.1 Java層啟動代碼分析37612.4.2 Native層啟動代碼分析38112.4.3 Native層病毒核心分析39312.5 DroidKongFu病毒框架總結40412.6 病毒防治40612.7 本章小結406
⑷ 混淆的class文件怎麼進行反編譯
一般情況下Java應用的開發者為了保護代碼不被別人抄襲,在生成class文件的時候都java文件進行了混淆,這種class文件用反編譯工具得到的結果很難看懂,並且不能進行編譯。
從研究的角度,淺析如何讀懂這種反編譯過來的文件。
例子一:賦值
反編譯過來的代碼如下:
Node node;
Node node1 = _$3.getChildNodes().item(0);
node1;
node1;
JVM INSTR swap ;
node;
getChildNodes();
0;
item();
getChildNodes();
0;
item();
getNodeValue();
String s;
s;
原始語句:
Node node;
Node node1 = currDocument.getChildNodes().item(0);
node = node1;
String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
註解:
JVM INSTR swap ; //賦值語句
練習:
String s1;
String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
s8;
s8;
JVM INSTR swap ;
s1;
10;
Integer.parseInt();
int i;
i;
例子二:不帶參數創建對象
反編譯過來的代碼如下:
JVM INSTR new #244 ;
JVM INSTR p ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始語句:
CrossTable crosstable = new CrossTable();
註解:
練習:
JVM INSTR new #246 ;
JVM INSTR p ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:帶參數創建對象
反編譯過來的代碼如下:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s2);
StringBuffer();
s.substring(j, i);
append();
s6;
append();
toString();
s2;
原始語句:
s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
註解:
此語句實際上是:s2 += s.substring(j, i) + s6;
練習:
例子四:for循環
反編譯過來的代碼如下:
int k = 0;
goto _L4
_L8:
...
k++;
_L4:
if(k < as.length) goto _L8; else goto _L7
原始語句:
for(int k=0;k < as.length;k++)
{
...
}
註解:
例子五:while循環
反編譯過來的代碼如下:
String s1 = "";
goto _L1
_L3:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s1);
StringBuffer();
_$2(resultset, s, l);
append();
toString();
s1;
_L1:
if(resultset.next()) goto _L3; else goto _L2
原始語句:
String s1 = "";
while(resultset.next())
{
s1 = s1 + resultSetToString(resultset, s, l);
}
⑸ android 軟體反編譯 可以獲得源代碼嗎
android培訓中有很重要的一個知識點就是反編譯獲得java源代碼,但是這個知識點又恰恰是很多同學的軟肋,很難掌握,今天就來幫你解決你的難題。
環境:win7
步驟:
1,下載工具包
dex2jar-0.0.9.13--反編譯工具--name=dex2jar-0.0.9.13.zip&can=2&q=
jd-gui-0.3.5.windows.zip--反編譯後的文件查看器
分別解壓。
2,將源apk的後綴名修改.jar並解壓,得到其中的classes.dex文件,將classes.dex復制到dex2jar.bat所在目錄dex2jar-0.0.9.13文件夾
在命令行下定位到dex2jar.bat所在目錄 (開始>運行>cmd>cd c:\dex2jar-0.0.9.13)
運行 :dex2jar.bat classes.dex
將生成 classes_dex2jar.jar
接下來就可以通過jdgui下的jd-gui.exe程序打開生成的jar包看到java代碼了。
多看多做多練習是學習語言必須經歷的過程,學習不是一朝一夕的事情,只有恆之以衡的堅持才能帶來成功。希望以上的Android教程能給大家帶來幫助。
⑹ 安卓APK文件怎樣去除內置廣告及修改圖標和文字
一:首先會用到幾個軟體,一個是dex解包、打包工具、Notepad++
Portable(dex文本編輯工具)、以及簽名工具和JAVA運行環境安裝,其他軟體可以到這個地址下載:http://yunpan.cn/lk
/sVkRQBi4HAJhu?sid=301
二:把需要去廣告的軟體,右鍵用7-zip解壓方式打開,把classes.dex拉出來。
三:用dex工具解壓classes.dex文件(具體方法看包裡面說明)。打開Notepad++ Portable搜索 http:// (注意復制)
四:如圖雙擊搜索到的網址,在上面改為無效網址就可以了。或直接刪除引號里的網址,然後保存「全部」文件(這個修改時要注意,有的軟體如果修改錯誤的話可能不能安裝,可以網上搜一些是廣告的連接。我只是提供一個方法,具體大家多練習研究吧)
引用:
還有ads字樣文件
都可能是廣告
但schemas.android.com開頭的不是
去廣告步驟:
1、去除廣告下載源
解包classes.dex(方法上面已講過),用Notepad++ Portable搜索廣告下載源地址(若不知道軟體用的是哪個供應商的廣告的話,最好兩家的下載源都搜索下)
2、去除廣告界面
① 將剛剛已經替換了classes.dex文件的apk安裝包用反編譯。
② 用Notepad++ Portable搜索廣告代碼(上面已列出)
如圖,將搜索路徑定位到res文件夾(就是反編譯後的res文件夾),代碼只搜索開頭就行了,如:com.admob.android.ads.AdView 和 com.google.ads.GoogleAdView。
如圖:
搜索結果:
③ 雙擊黃顏色區域,修改下圖上方的代碼
android:layout_width="fill_parent" 修改為 android:layout_width="0.0dip"
android:layout_height="wrap_content" 修改為 android:layout_height="0.0dip"
修改後:
將所有搜索到的代碼按照上面修改,完成後保存
五:封包classes文件夾(見包里說明),然後把classes.dex文件再次拖動到用解壓方式打開的APK文件內。刪除圖下2個或3個文件,簽名安裝即可。
修改更換安卓軟體圖標
一個安卓程序的圖標有時候並不見得每個人都喜歡,而且,某些APK程序不具備高解析度的程序圖標,造成在程序在高解析度的屏幕下圖標顯示效果較差,所以有必要的時候是可以更改一下以滿足個性化需求的,下面說說具體怎麼做。
工具
7-zip
DoAPk.exe(或AndroidResEdit選擇簽名)
Java環境
步驟/方法
1.首先,把要更改圖標的APK程序用7-zip進行解壓
2.解壓出來,看到如下文件和目錄,其中看到一個名為res的目錄,這個目錄中存放的就是安裝程序的資源文件,包括各種圖片素材和聲音素材,當然,我們需要的程序圖標就包含在裡面,雙擊打開res這個目錄
3.之後在系統上方的搜索欄搜索帶有"icon"字樣的文件。通過基本判斷可以得知,app_icon.png就是程序的圖標,或找程序的圖標(你懂得).
4.找一個自己喜歡的程序圖標,需要注意的是,替換後的程序圖標的名字,格式,解析度大小都要和原圖標一致,然後才把原來的app_icon.png替換.
5.替換完成之後,我們需要重新打包程序。回到程序解壓之後的目錄,刪除原來的圖標文件。拖動新的圖標到裡面。搞定!
6.打開AndroidResEdit選擇簽名.或打開Doapk.exe點擊「單獨製作ROM和APK簽名」這一按鈕,之後會彈出一個窗口,這里讓用戶選擇自己需要簽名的APK文件.
7.彈出窗口中選擇好自己改好圖標的APK文件,然後點擊製作簽名,這樣就完成了對APK程序的簽名,這樣的APK程序在手機上安裝才不會彈出錯誤提示
注意事項:DOAPK需要java環境的支持,使用前得先安裝。更改前備份好源程序文件
文字修改
相信很多機友(特別是有強迫症的童鞋,比如我)遇到過這個問題,甚至可以說是困擾;
很喜歡一款軟體,全身上上下下就一個看不順眼 —— 軟體名字;
下面介紹如何修改軟體名稱。
別告訴重命名可以通過第三方桌面解決,那個沒有技術含量!!而且改的只是皮毛哦。
一、准備工作:
軟體ArscEditor.exe
二、修改 APK 軟體名稱:
1、右擊 APK 安裝包,用壓縮軟體解壓到當前文件夾;(如下圖所示)
2、解壓後找到文件「resources.arsc」;
3、打開將文件「resources.arsc」直接拖入ARSC編輯器的空白處中;(如下圖所示)
4、選擇「string」標簽,並找到鍵值「app_name」;
5、將「區域」切為CN(有的不用切換),然後在「區域值」中修改你想要的軟體名字,修改好後點擊「保存當前值」;
6、點擊「文件」,選擇「保存」,並覆蓋保存;
7、右擊 APK 安裝包,用壓縮軟體打開;(註:無需解壓)
8、將修改好的「resources.arsc」文件直接拖入進安裝包內並確認覆蓋原文件;(如下圖所示)
三、重新簽名:
1、打開所得到的文件夾,並打開簽名工具「AndroidResEdit.exe」;
2、選擇「簽名」 - 「簽名 apk 文件」;簽名後生成的新安裝包名為「XXX-SignFile.apk」,安裝到手機。