Android Smali反彙編分析與除錯
很多Android APK由於加密了(比如加了花指令), 無法反彙編為Java程式。此時只能檢視Smali原始碼, 用Smali原始碼進行除錯分析。
smali以及baksmali的jar包用法
baksmali下載:jar包下載地址
命令列:java -jar baksmali-2.1.3.jar -o [輸出資料夾] dex檔案
執行結果如圖:
執行成功後,可以進入smali資料夾中看到轉換成功的smali檔案了。
smali原始碼的除錯分析
用QTrace(http://www.qtrace.top)程式可以方便的檢視Smali原始碼,並進行除錯。
開啟QTrace, 點選選單 File->專案->編輯專案:
專案路徑設定為,反編譯後的Smali原始碼路徑。
並把要除錯的程式碼,新增到專案中。
然後就可以開啟對應的Smali原始碼進行除錯了,除錯方法跟Java原始碼完全一樣。當發生中斷時,原始碼的位置也是非常準確的。
相關推薦
Android Smali反彙編分析與除錯
很多Android APK由於加密了(比如加了花指令), 無法反彙編為Java程式。此時只能檢視Smali原始碼, 用Smali原始碼進行除錯分析。 smali以及baksmali的jar包用法 baksmali下載:jar包下載地址 命令列:java -jar baksm
mingw32 exception在sjlj與dwarf差別-反彙編分析
sjlj (setjump/longjump)與dwarf-2為mingw32兩種異常處理模型的實現。sjlj有著開銷,而隨linux發行的mingw32開發庫包都是用sjlj版編譯的,而Qt卻採用dwarf-2版,那麼兩者之間有多少差異,本文就這問題對兩版的異常程式碼的反彙編進行分析比較。 我使用mingw
Android圖形系統的分析與移植--七、雙緩衝framebuffer的實現
1 實現原理在基本的FrameBuffer已經實現的基礎上,需要實現的是與Android原本模擬器所使用的goldfish FrameBuffer之間的區別。比較一下不難發現,從以下及方面著手:1. 修改初始化FrameBuffer資訊;2
LPC824 ROM-bootloader反彙編分析
1 ROM-bootloader反彙編分析 在Keil中(IAR暫不能實現,其他IDE未曾嘗試,本部分內容集中在對程式碼分析上,無需對工具軟體進行過多考慮)取消Option的Debug標籤頁上的“Run to main”選項,並且在Setting中選擇Stop after
android T9 搜尋聯絡人分析與實現(支援多音字)
最近在android專案開發過程中需要實現類似電話撥號功能,這裡涉及到T9鍵盤搜尋聯絡人,於是研究了一番,將思路和心得記錄於此,方便自己與他人。 相信大家對T9輸入法並不陌生,這裡並不涉及到T9輸入法,這裡只涉及到T9搜尋.以T9鍵盤搜尋聯絡人為例,分析與實
C庫字串反彙編分析
FROM:http://bbs.pediy.com/showthread.php?t=127475 1、strlen .text:00408150 mov ecx, [esp+arg_0] .text:00408154
android 中文亂碼的分析與總結
對於gbk這種編碼而言,中文所對應的位元組數是2byte;而在utf-8中,中文則是對應三個位元組。於是在輸入奇數個漢字時,最後一個位元組在gbk中則無法編譯。譬如說utf-8編碼的3個字,編碼是123|456|789 ,在傳輸到伺服器中時,系統認為這9個位元組是gbk編碼,於是就變成了12|34|56|78
Android中AppWidget的分析與應用:AppWidgetProvider
2012-8-20本文從開發AppWidgetProvider角度出發,看一個AppWidgetPrvodier在整個AppWidget體系中所扮演的角色。分析了AppWidgetProvider如何被AppWidget系統所識別;AppWidgetProvider何時/如何
linux 反彙編分析變數地址並用gdb修改執行中的程式記憶體變數實驗
準備樣本檔案: a.c #include <stdio.h> #include <unistd.h> unsigned int a=0xFFFFFFFF; unsigned
switch語句反彙編分析
假設switch語句的分支比較少的時候(例如3,少於4的時候沒有意義)沒有必要使用此結構,相當於if(可觀察反彙編得出此結論)。 1、各個分支常量的差值較大的時候,編譯器會在效率還是記憶體進行取捨,這個時候編譯器還是會編譯成類似於if,else的結構。 2、在分支比較多的時
Android ndk 開發環境配置與除錯(linux)
開發環境配置 一、 Android NDK: 集成了android交叉編譯器,針對不同版本android平臺提供了相應的gcc、g++、ndk-build、ndk-gdb等一系列編譯和除錯工具。 安裝ndk: 安裝包選擇: 選擇安裝包需要注意幾點: 1、 Andr
C語言三種迴圈反彙編分析
#include <stdio.h> #include <stdlib.h> int main() { 00AB13D0 push ebp 00AB13D1 mov ebp,esp 00AB13D3 sub
一個簡單程式的 gdb 反彙編 分析
《深入理解計算機》的第三章已經看了兩遍了,一直都是在看書裡的程式,一些內容都是第一次接觸,也一直沒有在真正的Linux上用過,今天寫了下發現和書裡的還是有些出入,下面是我自己的理解。 gdb除了反彙編外,還可以用於程式碼的除錯。下面就簡單記錄下容易忘記的部分。 1.gcc -
Android App冷啟動分析與優化
app的啟動方式: 1.)冷啟動 當啟動應用時,後臺沒有該應用的程序,這時系統會重新建立一個新的程序分配給該應用,這個啟動方式就是冷啟動。冷啟動因為系統會重新建立一個新的程序分配給它,所以會先建立和初始化Application類,再建立和初始化MainActivit
《C++反彙編與逆向分析技術揭祕》讀書總結——建構函式與解構函式
建構函式的必要條件: 這個函式的呼叫,是這個物件在作用域內的第一次成員函式呼叫,看this指標即可以區分物件,是哪個物件的this指標就是哪個物件的成員函式。 使用thiscall呼叫方式,使用ecx傳遞this指標; 返回值為this指標。 解構函式的必要條件: 這
Android中Native ELF的反彙編與破解的一些經驗
工具選擇與使用 一般Android執行的HW有: 32Bit的ARM64Bit的ARM64X86X64 對於Intel/AMD的X86/X64, 可選的工具比較多, 因為ELF執行的Host是And
c&c++反彙編與逆向分析學習筆記(2)--反彙編靜態分析工具IDA
所謂“靜態分析”,是相對於前面提到的“動態分析”而言的。在“動態分析”過程中,偵錯程式載入程式,並以除錯模式執行起來,分析者可以在程式的執行過程中觀察程式的執行流程和計算記過。但是,在實際分析中,很多場合不方便執行目標,比如軟體的某一模組(無法單獨執行)、病
IDA PRO 靜態反彙編與OllyDbg動態除錯實戰技巧彙總
<span style='font-family: "微軟雅黑", "Microsoft YaHei"; font-size: 20px;'>#include "stdio.h"<br><br>long add(long a, long b)<br>{<b
Android開發之漫漫長途 番外篇——內存泄漏分析與解決
set 程序 靜態 內存 ins clas back undle 介紹 該文章是一個系列文章,是本人在Android開發的漫漫長途上的一點感想和記錄,我會盡量按照先易後難的順序進行編寫該系列。該系列引用了《Android開發藝術探索》以及《深入理解Android 卷Ⅰ,Ⅱ,
無源晶振加反相器變有源分析與總結
bbb 功耗 高頻 指定 信號 只需要 防止 class 引腳 轉自“電子產品世界” 1.晶體和晶振 通常,我們會將“晶體”(Crystal)和“晶振”(Oscillator)都叫成“晶振”,其實這種叫法並不恰當。 無源晶體是有兩個引腳的無極性元件,如圖1(a)。正常工作時