吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13519|回复: 39
收起左侧

[Android 原创] 学会”融会贯通”简易脱某So壳

  [复制链接]
Ericky 发表于 2016-1-2 22:21
前言
“元旦佳节,难得有闲情逸致。品一杯香茗,看IDA中的汇编代码。”
虽说是迟到的祝福,但这里还是先祝各位朋友元旦快乐,愿大家的技术蒸蒸日上,身体棒,棒,棒!在逆向这条荆棘密布的道路上,难免遇到各种各样的困难,有的甚至是看似不可逾越的鸿沟。但话又说回来,其实逆向这个领域,很多技术是相通的,思维方式更是相通的。
网上的资料并不少,教程和文章都很多,少的就是大家对一些新问题的思考,对一些知识的灵活运用和融会贯通。今天就用这样的方式来脱一下某公司的so壳。论证一下融会贯通在逆向领域甚至说在“这个稀少方向”的重要性。

初探加壳so
一般来说,我们从java层入手,在跟踪某一个关键函数或者一个关键变量的时候,会跟到一个native的函数里,这个时候就需要进入深邃的so。或许很多人会害怕so加壳,觉得那么遥不可及。我们来揭开加壳后so的神秘面纱,让大家对so加壳不再畏惧。
打开IDA定位到关键函数后:
图片1.png
如图,指令都被抹掉了,关键的函数完完全全被“清空”。
其他函数也一并被清空:
图片2.png
卸下加壳so的外衣
尽管IDA加载的so里面的指令都被清空了,但是有一条不变的宗旨。那就是这些代码在执行之前肯定要解密的,解密的时候那就肯定在内存中,既然在内存中,我们就可以把它拿出来。
在关键函数段首下好断点:
图片3.png
IDA附加程序,出现same则点击same对话框。接下来需要让程序断在我们的断点处,代码已经解密出来了:
图片4.png
接下来用Ctrl+S 来定位一下该so在内存中的位置,用以下IDC脚本dump出来即可:
[Asm] 纯文本查看 复制代码
auto fp, SoAddress;
fp = fopen("D:\\unpack.so", "wb");
for ( SoAddress=0x51F6546C; SoAddress< 0x51F6B7B8; SoAddress++ )
fputc(Byte(SoAddress), fp);
脱壳前后对比 图片5.png

左边为加壳后的指令,都被抹去
右边为脱壳后的指令,全部恢复
总结
希望通过对这篇文章阅读,你已经对so不再恐惧了。有所思考的读者,肯定会发现,这和脱dex很相似,是的,这就是脱dex的方法在脱so壳上的再利用。很多人遇到问题就百度,就google,百度和google没有的话他就不知所措了,或者说是一直在等他人分享的工具,在这样的心理下,形成了不容易使得他自身技术进步的一种思维方式。我还是想说,很多技术其实网上都有资料,稍微变形或者换了一个新东西很多人就懵了(最近还有人问支付宝内购的问题,论坛里有大量的资料了),所以说,对知识学习的融会贯通的程度决定了我们能走多远,另外一方面,我们缺的不是资料,缺的是思考,缺的是一个思维定式里的突破。最后希望大家能把学的知识融会贯通,也再次祝大家2016年有新的收获!
(*^__^*)
PS:附件附上脱壳前后so
2016.1.2
By Ericky



免费评分

参与人数 15威望 +3 热心值 +15 收起 理由
469164323 + 1 没前面基础的例子,看着不是很懂
lianaini + 1 谢谢@Thanks!
1372_7 + 1 谢谢@Thanks!
我是木头 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
ジ秋水 + 1 已答复!
yyj85391 + 1 感谢!
lakshmi + 1 我很赞同!
ai枫 + 1 谢谢@Thanks!
安然的兜兜 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
windwing1883 + 1 正好用上,那这样的so怎么用呢
spguangz + 1 我很赞同!
BY丶显示 + 1 已答复!
lies2014 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
简丶 + 1 谢谢@Thanks!
qtfreet00 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.

查看全部评分

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

 楼主| Ericky 发表于 2016-1-4 22:22
wgz001 发表于 2016-1-4 12:01
应该是有反调试了,附件和你分析的是不一样的文件,大大有空再看一下吧,谢谢了

今天没时间仔细看,但我看你的图,里面有个AntiDebug,确实不一样,你可以在这个函数段首也下个断点,先把antidebug 干掉,最暴力的方式就是把检测代码都nop掉
wgz001 发表于 2016-1-4 11:39
Ericky 发表于 2016-1-4 11:34
你点下验证按钮  就触发了

我是点了验证按钮的,但是停不到下好的断点那里,停在另外的地方,好像有反调试么?求指点一下 456.jpg
吾爱米西 发表于 2016-1-2 22:24
qtfreet00 发表于 2016-1-2 22:39
师傅牛牛哒
玩世不攻 发表于 2016-1-2 22:50
还有板凳吗   支持一下
StartF5 发表于 2016-1-2 22:53
好像很高深的样子
简丶 发表于 2016-1-2 23:02
收藏先。。
lies2014 发表于 2016-1-2 23:15
前来学习,茅塞顿开啊!
潇洒gg 发表于 2016-1-2 23:30
这么6的教程,虽然看不懂,但是可以先顶下
BY丶显示 发表于 2016-1-3 00:27
学习了,支持一个,
孤独沉默者s 发表于 2016-1-3 00:30 来自手机
最近刚好遇到so加壳的难题,感谢分享(ω)
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 22:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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