Smali - Decompiling/[Modifying]/Compiling
рдХрднреА-рдХрднреА рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдк рдЫрд┐рдкреА рд╣реБрдИ рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХреЗрдВ (рд╢рд╛рдпрдж рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЫрд┐рдкреЗ рд╣реБрдП рдкрд╛рд╕рд╡рд░реНрдб рдпрд╛ рдЭрдВрдбреЗ)ред рдлрд┐рд░, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк apk рдХреЛ рдбрд┐рдХрдВрдкрд╛рдЗрд▓ рдХрд░реЗрдВ, рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред
Opcodes reference: http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
Fast Way
Visual Studio Code рдФрд░ APKLab рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбрд┐рдХрдВрдкрд╛рдЗрд▓, рд╕рдВрд╢реЛрдзрд┐рдд, рд╕рдВрдХрд▓рд┐рдд, рд╕рд╛рдЗрди рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИ рд╡рд╣ рд╣реИ https://github.com/ax/apk.sh
Decompile the APK
APKTool рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк smali рдХреЛрдб рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрджрд┐ apktool рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬрд┐рди рдкрд░ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
res/values/strings.xml (рдФрд░ рд╕рднреА xmls рдЬреЛ res/values/* рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ)
AndroidManifest.xml
рдХреЛрдИ рднреА рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕рдХрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .sqlite рдпрд╛ .db рд╣реИред
рдпрджрд┐ apktool
рдХреЛ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ, рддреЛ https://ibotpeaches.github.io/Apktool/documentation/#framework-files рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдпрд╛ -r
(рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдбрд┐рдХреЛрдб рди рдХрд░реЗрдВ) рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдлрд┐рд░, рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдереА рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА (рдЖрдк рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рднреА рдбрд┐рдХрдВрдкрд╛рдЗрд▓ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ)ред
Smali рдХреЛрдб рдмрджрд▓реЗрдВ
рдЖрдк рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирдП рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ Smali рдХреЛрдб рдХреЛ VS Code рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓рддрд╛ рд╣реВрдБ, рдлрд┐рд░ рдЖрдк smalise рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдкрд╛рджрдХ рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢ рдЧрд▓рдд рд╣реИред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрд╛ рдЖрдк рдиреАрдЪреЗ рдХреБрдЫ Smali рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
APK рдХреЛ рдкреБрдирдГ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ
рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдХреЛрдб рдХреЛ рдкреБрдирдГ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрд╣ dist рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рднреАрддрд░ рдирдП APK рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ apktool рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ, рддреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдирдП APK рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реЗрдВ
рдлрд┐рд░, рдЖрдкрдХреЛ рдПрдХ рдХреА рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЖрдкрд╕реЗ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдорд╛рдВрдЧреА рдЬрд╛рдПрдЧреА рдЬрд┐рд╕реЗ рдЖрдк рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ):
рдЕрдВрдд рдореЗрдВ, рд╕рд╛рдЗрди рдХрд░реЗрдВ рдирдП APK рдХреЛ:
рдирдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди
zipalign рдПрдХ рдЖрд░реНрдХрд╛рдЗрд╡ рд╕рдВрд░реЗрдЦрдг рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди (APK) рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрдХреВрд▓рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАред
рдирдП APK рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реЗрдВ (рдлрд┐рд░ рд╕реЗ?)
рдпрджрд┐ рдЖрдк apksigner рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдмрдЬрд╛рдп jarsigner рдХреЗ, рддреЛ рдЖрдкрдХреЛ apk рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП zipalign рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рд╣реИ jarsigner рдХреЗ рд╕рд╛рде (zipalign рд╕реЗ рдкрд╣рд▓реЗ) рдпрд╛ aspsigner рдХреЗ рд╕рд╛рде (zipalign рдХреЗ рдмрд╛рдж)ред
Smali рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Hello World Java рдХреЛрдб рдХреЗ рд▓рд┐рдП:
Smali рдХреЛрдб рд╣реЛрдЧрд╛:
The Smali instruction set is available here.
Light Changes
рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЪрд░ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ
рдХреБрдЫ рдЪрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ const рдСрдкрдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдирдП рдорд╛рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдЪрд╛рд▓рди
рдмрдбрд╝реЗ рдкрд░рд┐рд╡рд░реНрддрди
рд▓реЙрдЧрд┐рдВрдЧ
Recommendations:
рдпрджрд┐ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ (declared v0,v1,v2...) рддреЛ рдЗрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ .local <number> рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдШреЛрд╖рдгрд╛рдУрдВ (const v0, 0x1) рдХреЗ рдмреАрдЪ рд░рдЦреЗрдВред
рдпрджрд┐ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдХреЗ рдмреАрдЪ рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛрдб рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
рдШреЛрд╖рд┐рдд рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ 2 рдЬреЛрдбрд╝реЗрдВ: рдЙрджрд╛рд╣рд░рдг: .locals 10 рд╕реЗ .locals 12ред
рдирдП рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рдШреЛрд╖рд┐рдд рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдЕрдЧрд▓реЗ рдирдВрдмрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ v10 рдФрд░ v11 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ v0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ)ред
рд▓реЙрдЧрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдХреЛ рдмрджрд▓реЗрдВ рдФрд░ v10 рдФрд░ v11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ v5 рдФрд░ v1 рдХреЗ рдмрдЬрд╛рдпред
Toasting
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ .locals рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ 3 рдЬреЛрдбрд╝реЗрдВред
рдпрд╣ рдХреЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреАрдЪ рдореЗрдВ рдбрд╛рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ (рдЬрд╝рд░реВрд░рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрджрд▓реЗрдВ)ред рдпрд╣ this.o рдХрд╛ рдорд╛рди рд▓реЗрдЧрд╛, рдЗрд╕реЗ String рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ toast рдмрдирд╛рдПрдЧрд╛ред
Last updated