冥界3大法王 发表于 2020-9-9 07:52

Jeb3.24动态安卓调试.smali使用 第一集 【入坑指南】

本帖最后由 冥界3大法王 于 2021-6-23 17:44 编辑

Jeb3.24动态安卓调试.smali使用 第一集 【入坑指南】
                                                                  导演:冥界三大法王
前两天研究注入输出LOG,过滤查找关键点;不过感觉方法是可行,但是还是不够直观,于是又想到何不自己也去尝试下动态调试呢,这样心中的疑惑岂不尽解?
关于Jeb动态调试的贴子,论坛能找到的多为“悬案”;故此我们还是重新开贴说一下成功的过程和入坑指南吧。{:301_999:}

https://static.52pojie.cn/static/image/hrline/2.gif
官方推荐【Java(2020年7月为8u261】https://pan.baidu.com/share/init?surl=-yDfwEdTIpRUTOpp3VtPZQ    v6f3 (这是Help中写的,不信去看)

https://static.52pojie.cn/static/image/hrline/2.gif

我看上的版本【jeb3.24】:https://www.52pojie.cn/forum.php?mod=viewthread&tid=1250436&highlight=jeb
https://static.52pojie.cn/static/image/hrline/3.gif
激活与注册:到上贴下载安装包和相关破解文件覆盖同名
使用在线Python网站生成激活码:https://tool.lu/coderunner我用的这个(相关Python keygen包内有,用时在线粘改licdata=“你的码子”并运行!
Java方式折腾几次报错,Python本地注册要2.7;其他版本运行报错哟~~
为了以后方便,拖个【jeb_wincon.bat】快捷方式到开始菜单
之后我们就可以玩耍了;但是为了安卓动态调试,我们还得电脑里准备个安卓模拟器;备了【夜神】
【网易】 (需要扔3个文件过去,否则不通。可以移植夜神的abd*并在系统中添设全局变量)
找个apk拖进去(当然也支持dex等)

https://static.52pojie.cn/static/image/hrline/2.gif

https://www.pnfsoftware.com/jeb/manual/img/26b32ff1.png
其实无论玩啥软件第一步都是熟悉界面;这要你就知道主攻和辅攻目标在哪了?
左1红箭,项目浏览,项目附加区
左2红箭,底部调试输出的日志区
左3红箭,终端 交互命令区

左4红箭,空工作区

https://static.52pojie.cn/static/image/hrline/2.gif

如果您的输入文件是Android应用程序,则该应用程序将由各种Android分析插件处理:
[*]APK插件负责解开应用程序,解码清单和资源
[*]DEX插件执行一个或多个DEX字节码文件的分析和反汇编
[*]XML解析器分析XML资源
[*]证书插件分析证书
[*]... 等等
工作区可以拖拉调整位置

https://static.52pojie.cn/static/image/hrline/2.gif

费话不多说,还是实战吧。看过网上的视频,当然是残本,很不全,一般付费的都要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)
对了!对了!{:301_1006:}
还有一点非常重要!
你在系统环境变量中加入以下几行!
不然给你打脸!按下Win+Pause


细节不明白的,看这里:https://jingyan.baidu.com/article/90808022f65fc7fd90c80f5f.html
接下来见证奇迹的时刻到了!!!

这他娘的鬼东西可终于出来了。




现在看看调试菜单上的热键吧,论坛上懂OD的不少,因此这个不陌生吧?
我们试着去按按
F6等价于 单步
当我们走到


注意看右边,你每按一下,寄存器数值就会变动一下;右面有个0和1
第一次用,你们有没有啥想法? {:301_997:} 反正 我是想在第2行,手欠修改成1

另外类型也是可以改的,具体可参考下表,

或吾爱逆向合集:
我们回到程序中

证明我们改对位置了,还有更多的功能和技巧需要探索和发现
然后又会发现上面的几行中,包名是不能改的,数据类型和 数值 是可以修改的;但是数据类型需要手输,而不是下拉菜单中选择。

https://static.52pojie.cn/static/image/hrline/2.gif

屏幕上有许多【过滤器】字眼的地方,说明会出现很多信息,过滤和排除无用的项很重要
随便试了一下,有点卡顿
论坛的置顶贴中版主说过,不要使用全局搜索,那样会让你发疯
我看到了Jeb中能直接显示出中文字符串来,试着能不能复制出来研究呢?
Ctrl+A

我还没有Ctrl+C呢,就出来这东西
告诉你全选会生成比较大的数据,OK后输出txt
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转码版的,哈哈,所以不要太过痴迷一种方式哟~~

https://static.52pojie.cn/static/image/hrline/2.gif

热键列表问题:
对啊,不论哪款工具熟练运用你总不能没事总点菜单吧?
所以呢,还是有必要说一说的。

点击看大图吧。

https://static.52pojie.cn/static/image/hrline/2.gif
插件的使用:
这东西支持扩展使用,支持外部api接口,可以用Python实现

具体看这里:
通过命令行执行 与 调试日志输出显示。

https://static.52pojie.cn/static/image/hrline/2.gif
一些必须掌握的知识点:

最好是开发过几个简单的小app,比如最简单的HelloWorld,计算器程序就足够了。
你得知道入口点吧?
哪个是启动的主acivity?

包名,版本号,申请权限等。。


改名,你可以修改方法名,让你的分析更符合前后逻辑
/ 是注释
X交叉引用
Ctrl+X 源码级交叉引用

https://static.52pojie.cn/static/image/hrline/2.gif

快捷键不顺手能否被修改?
修改Java代码太过麻烦,我们还是直接AHK映射替换吧。

;我习惯Ollydbg中的,所以替换如下:
F8::F6   ;这是单步的中的F8
F7::^F6    ;进入方法Ctrl+F6
F4::R      ;运行到光标行
+F7::F7    ;从方法中出来F7
其他的需要时再弄,先弄个试试行不行?成了,哈哈。
https://static.52pojie.cn/static/image/hrline/2.gif

我们发现貌似翻译的不彻底啊?
查看帮助是这样说的https://www.pnfsoftware.com/jeb/manual/settings/#locale
除英文外,其他10个国家支持70%
可以找Jar工具来翻译,经简单测试可行



https://static.52pojie.cn/static/image/hrline/2.gif

多个dex到底能否动态调试?
经测试,是支持的,但会有些提示,无视即可。

https://static.52pojie.cn/static/image/hrline/2.gif

内部命令问题:

窗口 -> 显示终端视图
help就看到了~~

https://static.52pojie.cn/static/image/hrline/2.gif

两种调试模式:刚才我们见到了一种,还有一种。。。
你是否有一个疑问?

[*]刚才我们在进到了界面后,点击了按钮后触发了断下的事件
[*]如果这个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 等寄存器变化;变量的类型
[*]监听事件
[*]用到了啥控件?
[*]等等吧。。。师傅领进门,勤修靠个人。。你只看图哪能感受学习到这个动态调试手感有多好呢?

yiwai2012 发表于 2020-9-10 09:19

冥界3大法王 发表于 2020-9-9 10:44
@夜步城
对啊,对啊,尤其见到 方法名()字样的双击或回车进入   或Ctrl+F6 实在方便啊
简直是鸟枪换 ...

你这个更不全啊,最关键的都没有,jeb要连接模拟器动态调试的前提就是要能连接上找到进程

正己 发表于 2020-9-9 13:56

啥时候出第二集?{:17_1068:}

wgz001 发表于 2020-9-9 08:27

666,法王进军大安卓了

nevinhappy 发表于 2020-9-9 08:50

ninebell,你是最胖的!

muggleGod 发表于 2020-9-9 09:03

安卓大法好

霏映 发表于 2020-9-9 09:31

感谢分享,大佬

whngomj 发表于 2020-9-9 09:55

感谢分享,学习了.

夜步城 发表于 2020-9-9 10:02

这么好啊,之前只会Android Studio调试,但是不好用,我有时间试试这个,太棒了!

hbyybw 发表于 2020-9-9 10:43

感谢分享,学习了.

冥界3大法王 发表于 2020-9-9 10:44

夜步城 发表于 2020-9-9 10:02
这么好啊,之前只会Android Studio调试,但是不好用,我有时间试试这个,太棒了!

@夜步城
对啊,对啊,尤其见到 方法名()字样的双击或回车进入   或Ctrl+F6 实在方便啊
简直是鸟枪换炮啊~~

@nevinhappy
这都知道,被人肉了? {:301_976:}

@wgz001
拜见老魔 {:301_971:}
页: [1] 2 3 4 5
查看完整版本: Jeb3.24动态安卓调试.smali使用 第一集 【入坑指南】