首页
社区
课程
招聘
[原创]伪·MSC解题报告
发表于: 2015-1-26 21:44 33879

[原创]伪·MSC解题报告

2015-1-26 21:44
33879

唉唉~没办法,因为楼主是天秤座的,天生太懒了,所以这个帖子仅仅是简单说一下思路,截图什么的就肯定看不到了,而且我已经把题目的APK搞丢了。

补充一些题外话。如果参加过上次娜迦举办的沙龙,应该知道我现在也是从事apk保护工作的,所以限于工作原因,很多技巧都不应该公开的。但是这次比赛,还是公开了很多逆向技巧。
例如kill这东西,至少我没在别的公开场合见别人用过。只要合理利用kill,可以解决大部分反调试的附加问题(必要时需定制ROM)。
希望大家还是以学习为主,如果某天你利用这些技巧,破解了xx保护,xx加固,xx壳的话,只要偷着乐就好,还是不要拿出来炫耀了。毕竟很多人是靠这个吃饭的。
PS:还好我BOSS不上看雪,否则鸭梨山大啊。


第一题
就不说了,会点android逆向的都能很简单的搞定。
好吧,看到有人说jd-gui,有一部分看不到java代码。我只想说,根本就不需要看啊,看到那个Log.i就应该知道看log就行了。

第二题
把so拖到ida里面,找到native函数,按F5,就能看到一个很明显的比较循环,动态调试,在循环上下断点看内容就OK了。
看讨论,很多人说有反调试,过不了。对此貌似没有任何印象。
不过我的环境是自己改过的,有一些常规过反调试的措施。
根据后面几道题看到的内容,估计是读取了/proc/<pid>/status文件里面的状态和TracerId,这个自己想办法把读取的内容改了吧,一般是hook gets,之前有篇文章貌似说过。
一劳永逸的办法就是定制一个kernel,把调试信息全部去掉。

第三题
从这道题开始有点小麻烦。
就算有一些过反调试的措施,在我的环境下,ida一attach上去,程序就会退出。
看到有ptrace调用TRACEME,但返回结果都是-1,貌似是没影响。之前误以为是什么ptrace的高级用法,浪费了一些时间。事实上,在完成第三题的时候,我还是不能正常调试。
至于不调试怎么做呢。这里有个小技巧,就是利用kill指令,

kill -19 <pid>
kill -18 <pid>

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 3
支持
分享
最新回复 (41)
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
APK搞丢了?
2015-1-26 21:50
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
刚想求4 5题apk,就看到apk搞丢了几个字。求有程序的共享一下,谢谢!
2015-1-26 22:09
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
又仔细看了一下帖子,楼主 娜迦 的?
2015-1-26 22:10
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
5
能把自己的调试技巧写出来真是学习了....非常的大公无私
2015-1-26 23:44
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
马克下,明天电脑上学习大牛总结
2015-1-26 23:59
0
雪    币: 5451
活跃值: (3537)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
7
大神环境怎么搭的,大概有那些反调试措施呢,想学习一下!
2015-1-27 00:18
0
雪    币: 205
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
调试只是使用
kill -18 <pid>
就可以了吗
我这里使用了这个命令,还是附加失败,跟没使用一样。
2015-1-27 01:15
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
逆向真心是苦力活,舍得吃苦也不一定能吃的下来
2015-1-27 09:01
0
雪    币: 3502
活跃值: (1493)
能力值: ( LV15,RANK:1057 )
在线值:
发帖
回帖
粉丝
10
谁和我一样相求第四题第五题apk的
2015-1-27 09:37
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
11
其实我是做完一个,然后就把所有东西清空,给下一题留空间了。
2015-1-27 10:14
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
12
必须不是
2015-1-27 10:15
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
13
我也觉得说的有点多了。
不过Android这种开源平台的软件保护,很多都只是防防小白而已。
2015-1-27 10:16
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
14
反调试措施可以去找找上次娜迦的比赛一些相关分析。
娜迦的壳把常规的反调试都加上了。

怎么搭环境,就看你对源码的理解了。
2015-1-27 10:18
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
15
是kill -19,18是恢复运行
具体数字代表什么意义,可以参考libc源码里面的signal.h文件

暂停之后有明显特征就是app进程卡住了,怎么操作都无效。
2015-1-27 10:19
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
16
看不懂,只能学习了。
2015-1-27 10:43
0
雪    币: 10868
活跃值: (3282)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
17
谢谢QEver的分享!
2015-1-27 10:49
0
雪    币: 141
活跃值: (54)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
18
Hi lz,问一下那个wbyang的DD大法是什么?能详细解释下吗
2015-1-27 11:02
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
19
linux下有个命令叫dd,可以配合maps文件来做内存dump
2015-1-27 11:17
0
雪    币: 141
活跃值: (54)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
20
那要是我要用这个命令,是写一个android的程序运行注入的方式吗?
2015-1-27 12:36
0
雪    币: 20
活跃值: (210)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
感谢分享(*^__^*)
2015-1-27 13:01
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
22
目测是
dd if=/proc/<pid>/mem of=xx.bin ......

反正我不习惯用dd
2015-1-27 13:33
0
雪    币: 232
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
23
感谢分享kill暂停的方法,回去试下这个思路对付反调试
2015-1-27 13:46
0
雪    币: 141
活跃值: (54)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
24
[QUOTE=QEver;1349803]目测是
dd if=/proc/<pid>/mem of=xx.bin ......

反正我不习惯用dd[/QUOTE]

代码我知道,如何让它执行? adb shell su之后直接用?
2015-1-27 13:55
0
雪    币: 59
活跃值: (185)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
25
好帖留名
2015-1-27 14:58
0
游客
登录 | 注册 方可回帖
返回
//