前面介紹了一些工具可以反編譯dex文件為smali文件,在Android程序逆向分析中,閱讀smali代碼已然是十分重要的,但各種代碼編輯器都無法較好的支持smali文件的閱讀、編輯,目前貌似至于Notepad++可以用增加一些配置文件的方法來高亮顯示smali語法。
使用方法
將下面內(nèi)容保存到C:\Users\用戶名\AppData\Roaming\Notepad++下,文件名為userDefineLang.xml。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 |
< NotepadPlus > < UserLang name = "smali" ext = "smali" > < Settings > < Global caseIgnored = "no" /> </ Settings > < KeywordLists > < Keywords name = "Delimiters" ></ Keywords > < Keywords name = "Folder+" ></ Keywords > < Keywords name = "Folder-" ></ Keywords > < Keywords name = "Operators" >' ! " ( ) , ; : @ [ ] { }</ Keywords > < Keywords name = "Comment" >0#</ Keywords > < Keywords name = "Words1" >move move/from16 move/16 move-wide move-wide/from16 move-wide/16 move-object move-object/from16 move-object/16 move-result move-result-wide move-result-object move-exception return-void return return-wide return-object const/4 const/16 const const/high16 const-wide/16 const-wide/32 const-wide const-wide/high16 const-string const-string/jumbo const-class monitor-enter monitor-exit check-cast instance-of array-length new-instance new-array filled-new-array filled-new-array/range fill-array-data throw goto goto/16 goto/32 packed-switch sparse-switch cmpl-float cmpg-float cmpl-double cmpg-double cmp-long if-eq if-ne if-lt if-ge if-gt if-le if-eqz if-nez if-ltz if-gez if-gtz if-lez aget aget-wide aget-object aget-boolean aget-byte aget-char aget-short aget-short aput aput-wide aput-object aput-boolean aput-byte aput-char aput-short iget iget-wide iget-object iget-boolean iget-char iget-short iput iput-wide iput-object iput-boolean iput-byte iput-char iput-short sget sget-wide sgetobject sget-boolean sget-byte sget-char sget-short sput sput-wide sput-object sput-boolean sput-byte sput-char sput-short invoke-virtual invoke-super invoke-direct invoke-static invoke-interface invoke-virtual/range invoke-super/range invoke-direct/range invoke-static/range invoke-interface/range neg-int not-int neg-long neg-float neg-double int-tolong int-tofloat int-to-double long-to-int long-to-float long-to-double float-to-int float-to-long double-to-double double-to-int double-to-long double-to-float int-to-byte int-to-char int-to-short add-int sub-int mul-int div-int rem-int and-int or-int xor-int shl-int shr-int ushr-int add-long sub-long mul-long div-long rem-long and-long or-long xor-long shl-long shr-long ushr-long add-float sub-float mul-float div-float rem-float add-double sub-double mul-double div-double rem-double add-int/2addr sub-int/2addr mul-int/2addr div-int/2addr rem-int/2addr and-int/2addr or-int/2addr xor-int/2addr shl-int/2addr shr-int/2addr usnhr-int/2addr add-long/2addr sub-long/2addr mul-long/2addr div-long/2addr rem-long/2addr and-long/2addr or-long/2addr xor-long/2addr shl-long/2addr shr-long/2addr ushr-long/2addr add-float/2addr sub-float/2addr mul-float/2addr div-float/2addr rem-float/2addr add-double/2addr mul-double/2addr div-double/2addr rem-double/2addr add-int/lit16 rsub-int mul-int/lit16 div-int/lit16 and-int.lit16 or-int/lit16 xor-int/lit16 and-int/lit8 mul-int/lit8 div-int/lit8</ Keywords > < Keywords name = "Words2" >.method .annotation .end .line .prologue .implements .super .class .source .locals .parameter .field .local .restart</ Keywords > < Keywords name = "Words3" >public annotation method protected static final field private synthetic local</ Keywords > < Keywords name = "Words4" >Z V I F</ Keywords > </ KeywordLists > < Styles > < WordsStyle name = "DEFAULT" styleID = "11" fgColor = "000000" bgColor = "FFFFFF" fontName = "" fontStyle = "0" /> < WordsStyle name = "FOLDEROPEN" styleID = "12" fgColor = "FF0000" bgColor = "FFFFFF" fontName = "" fontStyle = "0" /> < WordsStyle name = "FOLDERCLOSE" styleID = "13" fgColor = "FF0000" bgColor = "FFFFFF" fontName = "" fontStyle = "0" /> < WordsStyle name = "KEYWORD1" styleID = "5" fgColor = "FF8040" bgColor = "FFFFFF" fontName = "Consolas" fontStyle = "1" fontSize = "10" /> < WordsStyle name = "KEYWORD2" styleID = "6" fgColor = "91A62D" bgColor = "FFFFFF" fontName = "Consolas" fontStyle = "2" fontSize = "10" /> < WordsStyle name = "KEYWORD3" styleID = "7" fgColor = "004080" bgColor = "FFFFFF" fontName = "Consolas" fontStyle = "0" fontSize = "10" /> < WordsStyle name = "KEYWORD4" styleID = "8" fgColor = "FF0000" bgColor = "FFFFFF" fontName = "Consolas" fontStyle = "0" fontSize = "10" /> < WordsStyle name = "COMMENT" styleID = "1" fgColor = "FF8080" bgColor = "FFFFFF" fontName = "Consolas" fontStyle = "2" fontSize = "10" /> < WordsStyle name = "COMMENT LINE" styleID = "2" fgColor = "008000" bgColor = "FFFFFF" fontName = "Consolas" fontStyle = "2" fontSize = "10" /> < WordsStyle name = "NUMBER" styleID = "4" fgColor = "D9006C" bgColor = "FFFFFF" fontName = "Consolas" fontStyle = "0" fontSize = "10" /> < WordsStyle name = "OPERATOR" styleID = "10" fgColor = "008040" bgColor = "FFFFFF" fontName = "" fontStyle = "0" /> < WordsStyle name = "DELIMINER1" styleID = "14" fgColor = "AF2BFF" bgColor = "FFFFFF" fontName = "" fontStyle = "0" /> < WordsStyle name = "DELIMINER2" styleID = "15" fgColor = "AF2BFF" bgColor = "FFFFFF" fontName = "" fontStyle = "0" /> < WordsStyle name = "DELIMINER3" styleID = "16" fgColor = "000000" bgColor = "FFFFFF" fontName = "" fontStyle = "0" /> </ Styles > </ UserLang > </ NotepadPlus > |
注意點,此方法可以適用于win7用戶,其他Windows沒有測試過,另外有些文件夾在有些電腦里面沒有顯示出來,是因為被隱藏的緣故,取消隱藏即可。
之后使用NP++打開smali既有highlight: