本帖最后由 冥界3大法王 于 2021-6-23 17:44 编辑
Jeb3.24动态安卓调试.smali使用 第一集 【入坑指南】
导演:冥界三大法王
前两天研究注入输出LOG,过滤查找关键点;不过感觉方法是可行,但是还是不够直观,于是又想到何不自己也去尝试下动态调试呢,这样心中的疑惑岂不尽解?
关于Jeb动态调试的贴子,论坛能找到的多为“悬案”;故此我们还是重新开贴说一下成功的过程和入坑指南吧。
官方推荐【Java(2020年7月为8u261】https://pan.baidu.com/share/init?surl=-yDfwEdTIpRUTOpp3VtPZQ v6f3 (这是Help中写的,不信去看)
我看上的版本【jeb3.24】:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1250436&highlight=jeb
激活与注册:到上贴下载安装包和相关破解文件覆盖同名
使用在线Python网站生成激活码:https://tool.lu/coderunner我用的这个(相关Python keygen包内有,用时在线粘改licdata=“你的码子”并运行!
Java方式折腾几次报错,Python本地注册要2.7;其他版本运行报错哟~~
为了以后方便,拖个【jeb_wincon.bat】快捷方式到开始菜单
之后我们就可以玩耍了;但是为了安卓动态调试,我们还得电脑里准备个安卓模拟器;备了【夜神】
【网易】 (需要扔3个文件过去,否则不通。可以移植夜神的abd*并在系统中添设全局变量)
找个apk拖进去(当然也支持dex等)
其实无论玩啥软件第一步都是熟悉界面;这要你就知道主攻和辅攻目标在哪了?
左1红箭,项目浏览 ,项目附加区
左2红箭,底部调试输出的日志区
左3红箭,终端 交互命令区
左4红箭,空工作区
如果您的输入文件是Android应用程序,则该应用程序将由各种Android分析插件处理:- APK插件负责解开应用程序,解码清单和资源
- DEX插件执行一个或多个DEX字节码文件的分析和反汇编
- XML解析器分析XML资源
- 证书插件分析证书
- ... 等等
工作区可以拖拉调整位置
费话不多说,还是实战吧。看过网上的视频,当然是残本,很不全,一般付费的都要6000-8000元
折腾了一天,到晚上才幸运的找到了问题的所在,唉。。。
按上图顺序找到OnClick 按下Ctrl+B 设好断点! 备用
拖入一个处理好的ZhuCeJi.apk (其实就是CrackMe了)
前期准备:有哪些进行过处理呢,简单的说一说吧!
- 使用了NP管理器加入了【插桩】,可以输出Log文件
- 修改了清单文件中的 【Application中android:debuggable="true"】别忘记,有引号,修正下!
当然你也可以用一劳永逸的办法ro.debuggable=1(需刷包)
或者干脆用已经Root的手机中的xpoosed插件来开启调试
当然你也可以用下面的办法:
Jeb这个东西可是有外部运行的命令和内部的命令两种!
安卓模拟器中还要开启开发者模式(版本号18下)
usb选项开启,目标进程,选择 你的app
你每次点调试器--》开始 ,出现的提示都是不一样的。
一般会告诉你需要一个调试桥建立连接; 有时也会告诉你用androdi studio 或 sdk tools (最可恶的是这两句话,没告诉你是绝对还是。。。)
折腾一天,因为网上的教程不全,各说各的理,问了不少人,多数不知道。。或他也糊涂,明白人一时没找到,还是自己憋出来的。。。唉。。。
我用的以下命令:
①D:\Nox\bin\nox_adb.exe devices
②D:\Nox\bin\nox_adb.exe shell am start -D -n com.qianyu.zhuceji/.MainActivity (粉的为包名,红的为主入口点Activity)
对了!对了!
还有一点非常重要!
你在系统环境变量中加入以下几行!
不然给你打脸!按下Win+Pause
细节不明白的,看这里:https://jingyan.baidu.com/article/90808022f65fc7fd90c80f5f.html
接下来见证奇迹的时刻到了!!!
这他娘的鬼东西可终于出来了。
现在看看调试菜单上的热键吧,论坛上懂OD的不少,因此这个不陌生吧?
我们试着去按按
F6等价于 单步
当我们走到
注意看右边,你每按一下,寄存器数值就会变动一下;右面有个0 和 1
第一次用,你们有没有啥想法? 反正 我是想在第2行,手欠修改成1
另外类型也是可以改的,具体可参考下表,
或吾爱逆向合集:
我们回到程序中
证明我们改对位置了,还有更多的功能和技巧需要探索和发现
然后又会发现上面的几行中,包名是不能改的,数据类型 和 数值 是可以修改的;但是数据类型需要手输,而不是下拉菜单中选择。
屏幕上有许多【过滤器】字眼的地方,说明会出现很多信息,过滤和排除无用的项很重要
随便试了一下,有点卡顿
论坛的置顶贴中版主说过,不要使用全局搜索,那样会让你发疯
我看到了Jeb中能直接显示出中文字符串来,试着能不能复制出来研究呢?
Ctrl+A
我还没有Ctrl+C呢,就出来这东西
告诉你全选会生成比较大的数据,OK后输出txt
[Asm] 纯文本查看 复制代码 0000005C if-nez v0, :82
:60
00000060 iget-object v0, p0, MainActivity$1->this$0:MainActivity
00000064 invoke-virtual MainActivity->getApplicationContext()Context, v0
0000006A move-result-object v0
0000006C const v1, 0x7F050005 # string:unsuccesseds "无效用户名或注册码"
00000072 invoke-static Toast->makeText(Context, I, I)Toast, v0, v1, v3
00000078 move-result-object v0
0000007A invoke-virtual Toast->show()V, v0
我们试一下,果然有个txt输出了,并且汉字是中文的;然后我又试了个大的多个dex的(电视家)结果就没有这么幸运了!
\u\XXXX 那种utf转码版的,哈哈,所以不要太过痴迷一种方式哟~~
热键列表问题:
对啊,不论哪款工具熟练运用你总不能没事总点菜单吧?
所以呢,还是有必要说一说的。
点击看大图吧。
插件的使用:
这东西支持扩展使用,支持外部api接口,可以用Python实现
具体看这里:
通过命令行执行 与 调试日志输出显示。
一些必须掌握的知识点:
最好是开发过几个简单的小app,比如最简单的HelloWorld,计算器程序就足够了。
你得知道入口点吧?
哪个是启动的主acivity?
包名,版本号,申请权限等。。
改名,你可以修改方法名,让你的分析更符合前后逻辑
/ 是注释
X 交叉引用
Ctrl+X 源码级交叉引用
快捷键不顺手能否被修改?
修改Java代码太过麻烦,我们还是直接AHK映射替换吧。
[Asm] 纯文本查看 复制代码 ;我习惯Ollydbg中的,所以替换如下:
F8::F6 ;这是单步的中的F8
F7::^F6 ;进入方法Ctrl+F6
F4::R ;运行到光标行
+F7::F7 ;从方法中出来F7
其他的需要时再弄,先弄个试试行不行?成了,哈哈。
我们发现貌似翻译的不彻底啊?
查看帮助是这样说的https://www.pnfsoftware.com/jeb/manual/settings/#locale
除英文外,其他10个国家支持70%
可以找Jar工具来翻译,经简单测试可行
多个dex到底能否动态调试?
经测试,是支持的,但会有些提示,无视即可。
内部命令问题:
窗口 -> 显示终端视图
help就看到了~~
两种调试模式:刚才我们见到了一种,还有一种。。。
你是否有一个疑问?
- 刚才我们在进到了界面后,点击了按钮后触发了断下的事件
- 如果这个app是一个先看到了广告界面(调用AD_Activity) 再进到主界面 (MainActivity)此时不就错过了嘛?
咱们说试就试来到OnCreate的地方设个断点
回到设置中的【开发者选项】,把目标程序 改为【空】
并关闭 当前app
我们再运行一次D:\Nox\bin\nox_adb.exe shell am start -D -n com.qianyu.zhuceji/.MainActivity
当然此时不用这么长了nox_adb.exe shell am start -D -n com.qianyu.zhuceji/.MainActivity 这样就行~~
回到Jeb调试器->开始-> 再点一次【附加】
不必太过于纠结
说明操作的没问题,一步一步按F6单步,主要仔细观察下安卓程序的运行流程:
- 体会方法名 的调用过程
- 界面调用过程
- vX ,pY 等寄存器变化;变量的类型
- 监听事件
- 用到了啥控件?
- 等等吧。。。师傅领进门,勤修靠个人。。你只看图哪能感受学习到这个动态调试手感有多好呢?
|