Android逆向基础(一)

前言

本文使用Android软件安全权威指南第二章的程序。将程序使用Android Studio编译打包生成APK程序。

ApkTool反编译

ApkTool手册及常用命令
执行命令apktool d .\AndCrakeMe1.apk -o AndCrakeMe1,在AndCreakeMe1目录下生成反编译文件。其中,res目录存放的是程序的资源文件,smali则是程序的反汇编代码。

分析反编译文件

错误提示是程序分析突破方式之一。错误提示属于Android程序的字符串资源。字符串可能存在于两个位置,一个是被硬编码到源码之中,一个是存储在res\values目录下的strings.xml中。 在注册失败时,程序会弹出“无效的用户名或注册码”,在strings.xml检索该字符串,得到它的字符串名称为“unsuccessed”,每个字符串资源都有唯一的int类型的索引值,反编译后保存在public.xml中。检索unsuccessed的id值为0x7f06002c,并在smali文件夹下搜索调用该字符串的代码。
查看代码,程序调用checkSN函数检查注册码,根据函数返回值决定是否跳转。if-nez对值v0进行判断,若v0不为零,跳转到cond_0,否则继续向下执行。此时装入0x7f06002c字符串,并弹出,注册不成功。
若v0不为零,跳转到cond_0处,装入id值为0x7f060029的字符串,查看public.xml及strings.xml,此id对应的字符串为“恭喜您!注册成功”
修改跳转逻辑,将if-nez修改为if-eqz当v0为零时跳转到cond_0.

编译、签名、安装

使用apktool.bat b .\AndCrakeMe1\命令重新编译修改后的文件,成功后会在\AndCrakeMe1\dist目录下看到重新生成的apk文件。使用signapk.jar工具对文件进行签名
java -jar signapk.jar testkey.x509.pem testkey.pk8 old.apk new.apk
,成功后会在当前目录生成签名后的文件。 adb install XXX.apk安装到模拟机。注意,使用adb命令,安装时的参数是apk文件名,卸载时的参数是包名。
输入任意字符,注册成功。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇