Smalidea無源碼調(diào)試android應(yīng)用

1. 安裝smalidea

https://github.com/JesusFreke/smali/wiki/smalidea
1.1. 進(jìn)入IntelliJ IDEA/Android Studio開始安裝插件,進(jìn)入Settings->Plugins點(diǎn)擊Install plugin from disk選中下載好的壓縮包
1.2. apply->restart Android Studio
1.3. 該調(diào)試方法的原理
采用 hook 方式達(dá)到開啟所有應(yīng)用調(diào)試的目的杨幼,xposed 插件代碼如下

public class Debug implements IXposedHookLoadPackage {
 
    public boolean debugApps = true ;
    public static final int DEBUG_ENABLE_DEBUGGER = 0x1;
    public String tag = "IDG";
 
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
 
        if(lpparam.appInfo == null ||
                (lpparam.appInfo.flags & (ApplicationInfo.FLAG_SYSTEM | ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)) !=0){
            return;
        }
 
        tag = tag + lpparam.packageName;
 
        XposedBridge.hookAllMethods(Process.class, "start", new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
 
                int id = 5;
                int flags = (Integer) param.args[id];
 
                Log.d(tag,"flags is : "+flags);
 
                if (debugApps) {
                    if ((flags & DEBUG_ENABLE_DEBUGGER) == 0) {
                        flags |= DEBUG_ENABLE_DEBUGGER;
                    }
                }
 
                param.args[id] = flags;
                Log.d(tag,"flags changed : "+flags);
 
            }
        });
    }
 
}

2. 安裝調(diào)試工具

2.1 安裝Xposed框架

2.1.1 XposedInstaller下載

http://repo.xposed.info/module/de.robv.android.xposed.installer

2.1.2 安裝XInstaller

  • 在Xposed中下載XInstaller,安裝并激活耿币,重啟系統(tǒng)以啟用XInstaller。
  • 配置XInstaller藕夫,啟動(dòng)專家模式琴拧。「其他設(shè)置」->勾選「調(diào)試應(yīng)用」

3. 項(xiàng)目設(shè)置

3.1. 生成smali文件

java -jar baksmali-x.x.x.jar com.your.app.apk -o proj/yourapp/src

3.2. Android Studio導(dǎo)入項(xiàng)目

  • 啟動(dòng)Android Studio->File->New->Import Project
  • 選擇上面生成的路徑嚼鹉,選定src的上層目錄
  • 選擇Create Project from existing sources
  • 選擇Make Directory AS->Sources Root
  • File->Project Structure 選擇對(duì)應(yīng)的SDK版本
  • 配置調(diào)試選項(xiàng)
    Run->Edit Configurations
    +」 -> Remote -> Port:8700

4. 開始調(diào)試

4.1 方法一:使用DDMS進(jìn)行調(diào)試

真機(jī)

  1. 勾選USB調(diào)試
  2. 勾選USB調(diào)試通知
  3. 在開發(fā)者選項(xiàng)中->選擇調(diào)試的應(yīng)用->選擇你要調(diào)試的程序->勾選等待調(diào)試器
  4. 啟動(dòng)程序,程序會(huì)停在等待調(diào)試器界面
    此時(shí)ddms可以看到進(jìn)程的端口號(hào)8700

Android Studio中對(duì)代碼下好斷點(diǎn)->Run->Debug->Remote即可開始調(diào)試
Console控制臺(tái)輸出
Connected to the target VM, address: 'localhost:8700', transport: 'socket'

4.2 方法二:使用adb調(diào)試

AndroidManifest.xml得到主Activity如下:
com.your.app.MainActivity

調(diào)試啟動(dòng)目標(biāo)程序
adb shell am start -D -W -n com.your.app/.MainActivity

設(shè)置端口轉(zhuǎn)發(fā)
adb shell ps | grep your.app
adb forward tcp:8700 jdwp:xxxxx

寄存器

Register | | Value
--- |---
v0 | | 第一個(gè)本地寄存器
v1 | | 第二個(gè)本地寄存器
v2 |p0 | this
v3 | p1 | 第一個(gè)參數(shù)
v4 | p2 | 第二個(gè)參數(shù)
v5 | p3 | 第三個(gè)參數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末徽缚,一起剝皮案震驚了整個(gè)濱河市憨奸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凿试,老刑警劉巖排宰,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異那婉,居然都是意外死亡板甘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門详炬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盐类,“玉大人,你說我怎么就攤上這事痕寓“磷恚” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵呻率,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我呻引,道長(zhǎng)礼仗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任逻悠,我火速辦了婚禮元践,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘童谒。我一直安慰自己单旁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布饥伊。 她就那樣靜靜地躺著象浑,像睡著了一般蔫饰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愉豺,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天篓吁,我揣著相機(jī)與錄音,去河邊找鬼蚪拦。 笑死杖剪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驰贷。 我是一名探鬼主播盛嘿,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼括袒!你這毒婦竟也來了次兆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤箱熬,失蹤者是張志新(化名)和其女友劉穎类垦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體城须,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚤认,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糕伐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砰琢。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖良瞧,靈堂內(nèi)的尸體忽然破棺而出陪汽,到底是詐尸還是另有隱情,我是刑警寧澤褥蚯,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布挚冤,位于F島的核電站,受9級(jí)特大地震影響赞庶,放射性物質(zhì)發(fā)生泄漏训挡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一歧强、第九天 我趴在偏房一處隱蔽的房頂上張望澜薄。 院中可真熱鬧,春花似錦摊册、人聲如沸肤京。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忘分。三九已至棋枕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饭庞,已是汗流浹背戒悠。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舟山,地道東北人绸狐。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像累盗,于是被迫代替她去往敵國和親寒矿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容