blog.Ring.idv.tw

2008 July

Android - Dump your .dex file

由於對於「Google Android」不甚熟悉,所以在上一篇的po文「初探Google Android」我不了解如何Dump出「.dex」檔案中所包含的opcode,還因此麻煩院內的同事(avain) ^^a 幫我詢問相關的資源,雖然沒有直接的解決我所要的需求,不過也提供我一個Google在五月底舉辦的Google I/O所發佈的Dalvik handouts,感謝呢! ^^

還好,今天終於發現了解決方案,原來Android OS就提供了一個「dexdump」的小工具,所以我們可以利用Android SDK所提供的「Android Debug Bridge (adb)」工具來操控Android Emulator,並透過remote shell command來達成我們的需求~

由於我先前已經開發了一個簡單的Android App來測試,所以現在直接啟動Android Emulator,然後執行Android SDK所提供的「Android Debug Bridge (adb)」工具來操作,而我只要輸入下列指令即可Dump出來:

adb shell dexdump -d -f -h /data/dalvik-cache/data@[email protected]@classes.dex > FirstAndroid.txt

接下來就花點時間去讀懂它了~ XDD

........................
source_idx    : 7 (FirstAndroid.java)
insns         : 17 16-bit code units
0004b4:                                        |[0004b4] tw.idv.ring.FirstAndroid.onCreate:(Landroid/os/Bundle;)V
0004b8: fa02 5800 3200                         |0000: +invoke-super-quick {v2, v3}, [0058] // vtable #0058
0004be: 2100 0200                              |0003: new-instance v0, Landroid/widget/TextView; // class@0002
0004c2: 7002 0200 2000                         |0005: invoke-direct {v0, v2}, Landroid/widget/TextView;.<init>:(Landroid/content/Context;)V // method@0002
0004c8: 1801 0000                              |0008: const-string v1, "Hello, Android" // string@0000
0004cc: f802 1e01 1000                         |000a: +invoke-virtual-quick {v0, v1}, [011e] // vtable #011e
0004d2: f802 6f00 0200                         |000d: +invoke-virtual-quick {v2, v0}, [006f] // vtable #006f
0004d8: 0e00                                   |0010: return-void
exceptions    : (none)
positions     : 
        0x0000 line=11
........................

相關資源

{HOWTO} Poke into the dex file

How to decompile .dex file on Android

2008-07-15 23:13:19 | Add Comment

初探Google Android

有一陣子沒碰Google Android,不過自從上次聽完Google Developer Day之後,對於Dalvik virtual machine內部的設計以及不同於JVM所客製化設計的「Shared Constant Pool」就一直抱持著想一探究竟的興趣~ 所以今天簡單的試了一下~ 想看看這樣以Register-based VM在opcode上面的執行情況是如何~

我用Google Android SDK所提供的小工具「dx」來看看「.dex」(Dalvik Executable)的檔案格式~

dx --verbose-dump --dex --dump-to=FirstAndroid.dump FirstAndroid.class

不過為何那一個個opcode都被「code-address」所取代掉了...?

....................
                           |codes:
0001c8: 0400 0000          |[1c8] tw.idv.ring.FirstAndroid.<init>:()V
                           |0000: code-address
                           |0000: code-address
                           |0000: code-address
                           |0000: code-address
                           |0000: code-address
                           |0000: code-address
0001cc: 7001 0000 0000     |0000: invoke-direct {v0}, android.app.Activity.<init>:()V // method@0000
                           |0003: code-address
                           |0003: code-address
0001d2: 0e00               |0003: return-void
                           |0004: code-address
                           |debug info @ [2f9]
                           |line starts at 7
                           |00000000: prologue end
                           |00000000: line 7
                           |End Sequence
....................

有人知道怎麼dump出這些「.dex」格式所對應的opcode嗎?

我不是很了解整個Android~ 希望有人可以分享~ ^^

相關資源

{Google Code} Android - An Open Handset Alliance Project

2008-07-11 23:20:33 | Add Comment

Yahoo! Search BOSS

今天看到「Yahoo Radically Opens Web Search With BOSS」這則新聞得知~ Yahoo!推出新的平台服務~ 它叫做「Yahoo! Search BOSS」~

「BOSS」的全文意思是「Build your Own Search Service」,也就是說我們可以利用此平台來建構和搜尋相關的應用服務~ 說到這邊~ 那為何在「BOSS」推出之前沒辦法哩?~

那是因為「Google」和「Yahoo!」所推出相關的Search API都有次數上或檢索結果上的限制~ 而且如果你不用這些API而改用「Cross Domain Proxy」的方式進行的話~ 那又會遭受到請求服務拒絕的情況發生~ 說到這邊又要提一下「CSProxy」^^a

所以「Yahoo! Search BOSS」的推出~ 的確對於一些進行IR領域的相關研究會蠻有正面的幫助~ 或許未來有更多意想不到的點子出來~

它們提供的API相當簡單易用,這裡舉個小例子,假設要檢索「Hadoop」那就下:

http://boss.yahooapis.com/ysearch/web/v1/hadoop?appid=[你的AppID]&format=xml

上面這個範例會看到一個「appid」的參數,也就是說要使用這API你必須去Yahoo! Search BOSS申請一個AppID~ 有興趣的玩玩看吧~ XDD

2008-07-10 19:28:07 | Add Comment

CSProxy beta1 released!!

今天釋出了「CSProxy beta1」~ 和「Alpha 3」相隔不到24小時~ XDDD

這個版本主要加入了客製化的「Callback」function,並改寫一些程式碼~ 以便讓使用者可以同時進行多個請求~ 所以這個版本也包含了一個同時針對Google Translate和Yahoo! Dictionary進行請求的範例,您可以自行下載擴充自己所要請求的服務~ 底下提供一個簡單的範例:

從上述的程式碼可以發現,以往需要透過「Cross Domain Proxy」委任伺服端請求的模式,現在通通都來到客戶端~ 如此一來~ 便可大大地降低請求服務遭到拒絕的情況發生~

接下來的beta2就是將文件補齊嚕~ ^^v

2008-07-10 00:43:04 | Add Comment

Air Icon Generator

(圖片來源:Air Icon Generator)

開發好Air Apps,但是又要為什麼樣的Icon傷腦筋嗎?

Air Icon Generator.是一個Air App,它提供你製作個人化的圖示,不過目前僅提供兩種樣式而已~

需要的人參考看看~ 至少比預設的Icon都會來的好看許多~ XD

2008-07-09 13:53:22 | Add Comment

Next Posts~:::~Previous Posts
Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment