吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 30588|回复: 75
收起左侧

[Android 原创] 《教我兄弟学Android逆向11 动态调试init_array》

  [复制链接]
会飞的丑小鸭 发表于 2018-7-20 20:39
本帖最后由 会飞的丑小鸭 于 2019-1-10 09:33 编辑

上一篇 《教我兄弟学Android逆向10 静态分析反调试apk》我带你用jeb+IDA静态分析了反调试apk,并且了解了init_array和jnionload的执行顺序 通过静态patch的方法 我们过掉了反调试验证,但光是静态patch似乎还不过于完美 ,有时候还需要配合动态调试来达到破解的目的,基于上节课你表现良好,那么这节课我将为你带来动态调试init_array的教程,注意认真听课不要眨眼睛呀!
要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学!    --致选择


环境:IDA7.0 ,手机:nexus
本节课的内容和上节课相关联,班级新来的同学请从上节课开始学起。
在开始本节课之前你需要先去了解IDA动态调试的相关方法和技巧 https://blog.csdn.net/feibabeibei_beibei/article/details/52740212

现在课程开始 请同学们回想一下上节课我给出的两种过反调试的方法:
1.改android端口号,android_serve的名称和修改内核的方式绕过tracepid的检测。
2.通过修改thread_function函数, SearchObjProcess函数和checkport函数的ARM指令来达到静态patch的目的。

这节课我将给你带来第三种过反调试的方法,也就是动态调试其实方法和第二种雷同 只不过是把静态patch换成了动态 。

一 .关键函数下断点
1.找到init_array段里面的函数thread_function 并在其第一条ARM指令上面按F2下断点。
1.1_1.png
1.1_2.png
1.1_3.png

2.在JNI_OnLoad函数调用SearchObjProcess处下断点 (c代码窗口和汇编指令窗口快速转换按Tab键)
1.2_1.png
1.2_2.png

3.动态注册的函数sub_1174第一条指令下断点。
1.3_1.png

二.动态调试
1.打开Android Device Monitor。
2.1_1.png
2.1_2.png

2.运行android_server
/data/local/tmp/android_server
2.2.png

3.端口转发adb forward tcp:23946 tcp:23946
2.3.png

4.因为我们要调试init_array所以需要在程序刚启动的时候进行调试 如果你对这条指令不熟悉 复习下第四课吧《教我兄弟学Android逆向04 动态调试smali代码 》
启动程序 am start -D -n demo2.jni.com.myapplication/.MainActivity
2.4.png

5.附加进程
2.5.png
2.5_2.png
2.5_3.png
2.5_4.png
2.5_5.png
2.5_6.png

6.附加完成后 如果IDA弹框直接点Yes Debugger option设置一下,因为我们里面会调试到线程所以线程打一个钩 。
2.6_1.png
2.6_2.png

7.上一步完成后F9运行程序 在IDA等待的时候运行命令。
jdb -connect com.sun.jdi.SocketAttach:port=8700,hostname=localhost
2.7_1.png
2.7_2.png
2.7_3.png

8.点击完same后程序会断在一个点,不要理会,直接F9(如果弹出框都点Yes) 直到程序断在了我们的断点处 并将函数第二条ARM指令改成POP让函数不执行直接出栈  或者把下面调用exit对应的HEX改成00 00 00 00都是可以的。
2.8_1.png
2.8_2.png
2.8_3.png
2.8_4.png
2.8_5.png

9.IDA继续F9让程序运行起来  直到程序断在我们下的第二个断点处 ARM指令BL是调用函数的意思 所以将其指令对应的HEX改成00 00 00 00 无意义的指令 直接patch掉达到让其不调用的目的 注:ARM指令不是本节课的重点,关于ARM指令的教程以后的课程会有讲到.
2.9_1.png
2.9_2.png

10.IDA继续F9 这时会来到我们下的第三处断点,注意这里是动态注册的函数 对于动态注册的函数我们就不能通过把第二条ARM指令改成POP直接出栈 否则程序会崩溃 那这里怎么改呢?这里可以直接把调用exit退出对应的HEX改成00 00 00 00来过掉。
2.10_1.png
2.10_2.png

11.到此这三处反调试就都过掉了,现在F9运行遇见弹框都点确定,然后程序弹框 恭喜你挑战成功!


三.总结
本节课我带你用IDA动态调试了init_array段和JNI_OnLoad里面的方法,并且熟悉了常用的两种patch方法,如果你不想让so中的某一个函数执行,可以直接把这个函数的第二条ARM指令改成POP出栈,但是有一点需要注意 对于动态注册的函数是不可以这样修改的,否则程序会发生异常退出。也可以找到其调用处直接将其对应的HEX改成00 00让其不调用。到此Android逆向基础部分已告一段落,希望大家对课程里面讲解的知识多多练习 毕竟师傅领进门 修行在个人嘛。  下节课我将会带你走进Hook的世界。


四.课后作业
1.了解Xpose的使用。
2.搭建Xpose环境,尝试编写Hook代码。


下一篇:《教我兄弟学Android逆向12 编写xpose模块



免费评分

参与人数 28吾爱币 +31 热心值 +27 收起 理由
derSir + 1 + 1 谢谢@Thanks!
unit10000 + 1 + 1 牛逼牛逼 这是我看过最好的nx教程了!!!!纯手打激动
sky1ike + 1 + 1 谢谢@Thanks!
火柴人烧火23 + 1 + 1 谢谢@Thanks!
gongyong728125 + 1 + 1 谢谢@Thanks!
皇中之王 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Roman_Black + 1 + 1 谢谢@Thanks!
bb8820 + 1 谢谢@Thanks!
gegon + 1 + 1 用心讨论,共获提升!
tztt3033 + 1 + 1 用心讨论,共获提升!
zmtdy + 1 + 1 热心回复!
编草鞋的蚂蚱 + 2 + 1 谢谢@Thanks!
不伦不类 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Keepnear + 1 + 1 热心回复!
vince991 + 1 我很赞同!
feishicheng + 1 + 1 谢谢@Thanks!
duanjia0912 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
2165998 + 1 + 1 用心讨论,共获提升!
soyiC + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
caleb110 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
kingkiller + 1 + 1 用心讨论,共获提升!
qaz003 + 1 + 1 偶遇好贴标准动作: 加分=>收藏=>慢慢看。。。。
O丶ne丨柒夜彡 + 1 + 1 谢谢@Thanks!
akria00 + 1 + 1 6666
煦涵 + 2 + 1 谢谢@Thanks!
夏雨微凉 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
123-木头人 + 2 + 1 谢谢@Thanks!
adonis + 1 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

feishicheng 发表于 2018-7-22 14:59
老铁给你点个赞,通过你的帖子来到了论坛,谢谢
BIJIE 发表于 2018-7-20 20:51
First blood!
第一次这么前排!

点评

新用户复制链接:https://www.52pojie.cn/?fromuid=619334 注册论坛转账50CB!为了论坛的发展、送福利希望小伙伴都来注册。  发表于 2018-7-21 00:09
狂侠先森 发表于 2018-7-20 21:01
wabanana 发表于 2018-7-20 21:08
很赞的丑小鸭
linuxprobe 发表于 2018-7-20 21:19
学这东西不是几张图片就能说的清楚的。
cs66092 发表于 2018-7-20 21:35
表示要从第一篇开始看起,辛苦楼主一直默默耕耘。
moke666 发表于 2018-7-20 21:35
nince,非常好,感谢分享
qaz003 发表于 2018-7-20 22:01
偶遇好贴标准动作: 加分=>收藏=>慢慢看。。。。
Norton 发表于 2018-7-20 22:06
楼主给力
plpplppl 发表于 2018-7-20 23:15
环境都不会搭建,没法学
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 16:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表