吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|青海快3规律 www.yvi63.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8554|回复: 130
上一主题 下一主题

青海省东部城市群: [Android 原创] 《教我兄弟学Android逆向10 静态分析反调试apk》

    [复制链接]
跳转到指定楼层
楼主
发表于 2018-6-8 13:00 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 会飞的丑小鸭 于 2018-6-14 18:53 编辑


上一篇 《教我兄弟学Android逆向09 IDA动态破解登陆验证》我带你分析了黑宝宝.apk,并且用IDA动态调试青海快3规律了登陆验证 看上节课你学习的不错 这节课给你带来的是过反调试的教程


在进入本节课之前我先问你一个问题
什么是反调试?
答:反调试技术是为了?;ぷ约撼绦虻拇氩槐荒嫦?。增加逆向分析的难度 防止程序被破解, 针对动态分析。
要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学!    --致选择


分析环境:JEB2.2.7+IDA7.0  测试手机:nexus
IDA7.0下载链接
链接:https://pan.baidu.com/s/1xEtjnTVZFuLiMpHKwMOY2Q 密码:g3v9

前言
测试一:首先拿到反调试挑战.apk 安装后直接运行,这里因为我没有动态调试程序,所以弹出框恭喜你,挑战成功!
测试二:用第9课讲的调试方法 先运行程序等程序弹框后再挂起IDA调试 发现IDA直接退出 猜测程序做了反调试。

一 用jeb反编译反调试挑战.apk
1打开Manifest查看android:debuggable="true" 说明此程序是可以被动态调试的。
2找到程序入口MainActivity 分析可知程序运行的时候调用了myJNI类中的Native函数checkport并弹框 所以checkport是弹框的内容 看函数名可知里面也有可能做了反调试
3分析代码可知程序弹框后说明checkport函数已经执行完了,但是IDA挂起来后程序还是退出,说明还是被反调试了 猜想有两种情况:
猜想一: checkport函数中开启了一个线程循环来做反调试 就算函数执行完 这个线程中的反调试还是运行的 (如果不开启线程 循环检测反调试程序主线程将会堵塞 )
猜想二: 我们知道init_array和JNI_OnLoad会在so加载的时候就开始执行,所以程序也有可能会在这里开启线程进行反调试。




4.带着上面的猜想 我们下面来分析下so


二 验证猜想一
IDA分析so
解压反调试挑战.apk进入lib文件夹下找到libsix.so并用ida打开  由于我手机支持v7所以这里我打开的是armeabi-v7a下的so
注意:这里一定要打开手机对应的so 如果手机是arm的就打开armeabi文件夹下的so,支持v7则打开armeabi-v7a下的so 同理x86的要打开x86文件夹下的so进行分析  这里很重要 不然会和动态调试的内存地址不对应
1.我们先来找到 checkport函数 看看代码里面到底有什么 按照以前教程中找Native函数的方法 我们打开函数导出表发现并没有checkport函数 在String窗口搜索恭喜你,挑战成功!也是搜索不到的说明此字符串被隐藏了  但是发现了JNI_OnLoad函数 说明函数checkport是动态注册的。


2. 怎么在IDA里面找到动态注册的函数呢?动态注册的函数一般会在.data.rel.ro.local或data中 Ctrl+s打开segment表  找到.data.rel.ro.local  这个段里面放的是动态注册的函数 点进去后就找到Checkport函数了 函数的定义在dword_1140中



3点进dword_1140发现这部分代码IDA没有解析好  这里需要手动解析一下 点住dword_1140右键Data转化成数据 然后鼠标放在__unwind按住P键就转换成函数了 这个函数就是checkport对应的函数





4.分析checkport函数 F5转换成C伪代码 导入Jni.h (不会导入的看前面的课程) 然后手动解析代码 提高代码可读性 解析完成后Esc返回到C代码 再按下F5刷新一下代码 解析的字符串就出来了




5 通过以上操作可以看到 恭喜你,挑战成功字符串已经被我们解析出来了 接下来分析这个函数 这个函数会 读取/proc/net/tcp,查找23946端口,也就是IDA动态调试的端口 如果查找到了说明程序正在被动态调试 然后退出程序 从而达到了反调试的目的。
但是这里我们看到这个函数的反调试并没有放到线程中做 说明只执行一次就结束了  而且测试一验证的时候这里的代码已经执行完了  所以其他地方一定还有反调试 并且只能在这个函数之前执行。


三 验证猜想二
init_array介绍
init_array段是在so加载的时候执行的 执行顺序要优先于 JNI_OnLoad  所以这里是最早被执行的函数 把反调试和so的解密放到这里是比较好的选择。

1 ctrl+s打开segment表找到.init_array段点进去 发现init_array段里面有一个thread_create函数 点进去F5转换成C伪代码 并分析函数






2.我们打开命令行窗口来验证一下 查看当前程序的status文件  ps命令用来列出系统中当前运行的那些进程




3.通过上面分析可知thread_create函数是创建线程循环读取当前程序的Tracepid的值 如果值大于0说明程序当前正在被动态调试并退出程序 那么现在就知道为什么在程序弹出恭喜你,挑战成功框后我们进行动态调试 程序还是会退出了 因为这里开启了一个线程进行循环反调试。
4.那么到这里程序的反调试是不是就找完了呢?刚刚我们也说了除了init_array还有一个地方JNI_OnLoad函数也会在so刚加载的时候运行 那么出于习惯 我们还是来看一下JNI_OnLoad函数

四 JNI_OnLoad函数
1.在函数窗口中搜索并找到JNI_OnLoad函数 F5反编译成C伪代码(有点时候导出表里面是没有JNI_OnLoad函数的 所以这里在函数窗口中搜索)







2.经过上面分析知道 JNI_OnLoad函数中调用SearchObjProcess函数进行反调试  这个函数通过ps列出当前手机的所有进程 然后如果进程名中包含android_server,gdbserver,gdb等名称 则认为程序当前被动态调试 退出程序

五 小结
1.首先我们通过JEB工具静态分析了反调试挑战.apk 发现在MainActivity类中调用了Native函数checkprot 因为这个函数是动态注册的 所以我们在data.rel.ro.local段中找到了这个函数 分析知道这个函数会读取/proc/net/tcp,查找23946端口 如果找到则认为程序当前被动态调试 退出程序
2 在init_array段里面发现了thread_create函数 这个函数创建了一个线程循环来读取/proc/pid/status文件下的TracePid的值 如果大于0说明程序正在被调试 退出程序
3.JNI_OnLoad函数中发现了SearchObjProcess函数通过搜索指定进程名来判断程序有没有被调试

六 解决方案一
1.对于checkprot我们可以通过-p将IDA调试端口改为23947或者其他端口 注意端口转发和IDA调试的端口号都要改成23947





2.对于thread_create函数我们可以刷机改内核让TracePid的值永远为0
参考文章《逆向修改内核,绕过TracerPID反调试
3.对抗SearchObjProcess函数可以将android_server改成其他名字然后运行 比如zs ls ww(张三,李四,王5)
参考文章教我兄弟学Android逆向番外03 Android逆向必会命令

七 解决方案二
1.也可以通过exit函数定位到反调试位置并patch掉当前函数 这里以thread_create函数为例子 因为此函数在init_array段里面 所以是没有调用的地方的 这里直接把第二条指令改成pop直接出栈   改Hex指令这里我就不为你演示了 前面教程都有教过。








2.对于SearchObjProcess函数 直接找到调用此函数的位置 然后nop掉 或者进函数里面把exit给nop掉都行  最后一处反调试这里也不演示了 方法相同


八 另一种patch方法
以前我们都是用IDA插件modifyfile.plw来patch 其实还有一种patch的方法 直接用IDA Patch Program插件来Patch也是可以的 点菜单Edit->Patch Progra





最后将patch后的so替换原包的so 重打包签名 运行 即可过反调试。

九总结
本节课我带你用JEB+IDA工具静态分析了反调试APK 通过本节课的学习 你了解了init_array段和JNI_OnLoad函数的执行顺序和这三处反调试的找寻方法  对于反调试 当然也可以通过搜寻特征的方式定位位置 比如TracePid反调试可以在字符串窗口搜索/proc/%d/status 检测进程名可以搜索android_server  检测端口号搜索5D8A 然后我又带你重温了一遍函数Patch的方法 以及第二种保存修改so的方法 通过本节课我想你对反调试技术已经有了初步的了解 教程附件里面前人总结出来的反调试大全 你可以看一看并且学习一下。学习完之后 下节课我将会为你讲解怎么动态调试这个apk。

十 课后作业
1.按照本节课教程把附件里面的反调试.apk so里面的反调试函数给patch掉 并重打包
2.了解并熟悉附件里面常见的反调试


第十课附件.zip

1.71 MB, 下载次数: 65, 下载积分: 吾爱币 -1 CB

售价: 5 CB吾爱币  [记录]

免费评分

参与人数 61吾爱币 +66 热心值 +60 收起 理由
77209341 + 1 + 1 谢谢@Thanks!
wantwo3 + 1 + 1 谢谢@Thanks!
小青年78 + 1 + 1 用心讨论,共获提升!
conway + 1 + 1 谢谢@Thanks!
彼岸梦逍遥 + 1 + 1 连我这不咋学习的都爱看这个
hglee + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
haoqwenie + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kldtsj + 1 + 1 上回忘记评分了!补上!
夏雨微凉 + 2 + 1 谢谢@Thanks!
灯火阑珊=zero + 1 + 1 用心讨论,共获提升!
22222 + 1 谢谢@Thanks!
异客之旅 + 2 + 2 谢谢@Thanks!
如实知见 + 1 + 1 谢谢@Thanks!
少狐 + 1 + 1 谢谢@Thanks!
sl1354656 + 1 + 1 热心回复!
bigbensb + 1 + 1 用心讨论,共获提升!
K_n + 1 + 1 热心回复!
瑟瑟发抖小菜虾 + 1 谢谢@Thanks!
xitian45 + 1 + 1 用心讨论,共获提升!
lzy学霸 + 1 + 1 用心讨论,共获提升!
zwslmk + 1 + 1 谢谢@Thanks!
人1998 + 1 + 1 我很赞同!
九五二七 + 1 + 1 谢谢@Thanks!
caleb110 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
potest + 1 + 1 高产
小叶- + 1 + 1 我很赞同!
jnez112358 + 1 + 1 谢谢@Thanks!
fszhangyu + 1 + 1 我很赞同!
zhclwr + 1 + 1 谢谢@Thanks!
a22999 + 1 + 1 谢谢@Thanks!
sau + 1 + 1 谢谢@Thanks!
囧到家 + 1 + 1 热心回复!
Ravey + 1 + 1 谢谢@Thanks!
二逼159 + 1 + 1 谢谢@Thanks!
ask1000 + 1 + 1 谢谢@Thanks!
玩世不攻 + 1 + 1 热心回复!
sunnylds7 + 1 + 1 谢谢@Thanks!
cqtyyd + 1 + 1 谢谢@Thanks!
shuaiger + 1 厉害了楼主!
冬冬飞侠 + 1 + 1 热心回复!
飞天蜗牛 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
silvanevil + 1 + 1 谢谢@Thanks!
yuanhangyu + 1 + 1 谢谢@Thanks!
mp652353553 + 1 + 1 用心讨论,共获提升!
ak103 + 3 + 1 我很赞同!
zhang53000 + 1 + 1 谢谢@Thanks!
O丶ne丨柒夜彡 + 1 + 1 谢谢@Thanks!
duanjia0912 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
老张有大梦想 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
wwg + 1 + 1 用心讨论,共获提升!
zhh4827 + 1 + 1 热心回复!
lookerJ + 1 + 1 谢谢@Thanks!
tztt3033 + 1 + 1 用心讨论,共获提升!
阿尔卡伊达 + 1 + 1 热心回复!
xinkui + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
菊花朝墙 + 1 + 1 谢谢@Thanks!
Kan刊 + 1 + 1 谢谢@Thanks!
rigo0 + 1 + 1 谢谢@Thanks!
lin_xop + 1 + 1 热心回复!
xjun + 3 + 1 良心教程 值得推荐!
sushangyu + 1 + 1 终于又等到大神更新了,谢谢

查看全部评分

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

推荐
发表于 2018-7-5 17:37 | 只看该作者
感谢您的持续更新,已更新到专题
【导航帖】编程区新手入门导航帖-持续更新
//www.yvi63.cn/thread-760726-1-1.html
吾爱因你更精彩!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

推荐
发表于 2018-6-19 09:19 | 只看该作者
好东西  教我兄弟学Android逆向10 静态分析反调试apk   正好学习下ANDROID

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

板凳
发表于 2018-6-8 13:04 | 只看该作者

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

报纸
发表于 2018-6-8 13:25 | 只看该作者
不错  学习了  感谢分享!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

地板
发表于 2018-6-8 13:29 来自手机 | 只看该作者
精品,火了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

7#
发表于 2018-6-8 13:38 | 只看该作者
跟进学习谢谢了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

8#
发表于 2018-6-8 14:03 | 只看该作者
楼主辛苦了 谢谢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

9#
发表于 2018-6-8 14:17 | 只看该作者
更新了?;鹎趺?/td>

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

10#
发表于 2018-6-8 14:50 | 只看该作者
真心很不错啊啊啊啊....挺好

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

11#
发表于 2018-6-8 15:25 | 只看该作者
感谢更新学习了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

12#
发表于 2018-6-8 15:33 | 只看该作者
感谢更新学习了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则


免责声明:
吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:[email protected]

快速回复 收藏帖子 返回列表 搜索

RSS订阅|手机版|小黑屋|联系我们|青海快3规律 ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2018-7-6 09:45

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回复 青海快3规律 返回列表
  • [大笑]阿Q都是这么说的。。。。。。 2018-08-15
  • 意料之中。美国若逼中国汇率升值,它自己会变成世界老二,所以只能直接动商品 2018-07-14
  • 肉毒梭菌感染相关新闻 2018-07-14
  • 马克思主义通过指导无产阶级革命建立起部分社会财富公有制而改变了人类历史发展进程,离开部分社会财富公有制的建立来谈“改变人类历史发展进程”纯粹是无稽之谈。 2018-07-13
  • 为迎香港回归,他用99天徒步走完京九线 2018-07-13
  • 别做梦了,醒醒吧。一个国家强大,教育是重要的。没有你说的那样美国妒忌心态。美国害怕的是中国不改革不开放,因为中国一旦做自己的企业,走自己的道路,对美国来说意味美 2018-07-12
  • 中国红旗9导弹相关新闻 2018-07-12
  • 写字楼起火 员工为保客户资料抱电脑主机逃下11楼 2018-07-11
  • 纪检监察机关加强扶贫领域监督执纪问责工作 2018-07-11
  • “十三五”规划出炉 古镇展望后五年发展蓝图 2018-07-11
  • 吃凉菜才是夏天的正经事 2018-07-10
  • 人民日报:中国经济稳步迈向高质量 2018-07-10
  • “亚洲第一海军”的蒙古国海军司令要管多少事儿?仨船俩炮六个兵 2018-07-10
  • 全新传祺GS4上市 祺云概念智慧SUV 2018-07-09
  • 暖心!高铁列车为他停靠三分钟 这一次没有人反对 2018-07-09
  • 230| 318| 957| 166| 656| 991| 934| 920| 694| 202|