首页
论坛
专栏
课程
6

[原创]ctf2017第六题设计思路与解题思路

Ericky 2017-5-26 17:23 2016

这道题主要需要花时间搞清楚套路,就迎刃而解了。^_^ 

1.java层稍作字符串加密和类名方法名混淆处理(本来是打算java层也做点文章的@_@)



解题:通过阅读代码,可以知道check函数为关键函数,当返回为真的时候,注册成功。


2.so层用花指令对程序指令进行混淆,在一定程度上防止分析。


解题:编写去花指令脚本,F5就会变得很简单。去花脚本在附件里了。去花后check函数F5如下:



这样就能很清楚看到注册过程了,第一个while循环释放存放好的字符串到byte_20020。sub_19DA8为加密函数,返回结果到v14,最后v14与byte_20020做比较,一样就行了。算法采用了RC4加密+base64编码。


3.值得一提的是,so中藏关键字符串数据的方式我自己觉得挺有意思的。不知道聪明的你有没有发现呢?如果不会去花也不要紧,还有一个解题的思路就是是找到最后的汇编cmp,下好断点,因为这个算法的缘故。java层可以遍历传入字符串进行遍历暴力破解。


4.总结一下,我自己想到了两个解题方式,一个暴力解题,一个去花解题。从男人刚正面的角度来讲,这道题主要就是考去花,没有加其他的东西了,直接被大佬们秒得体无完肤。。。先行膜拜。最后附上答案:madebyericky94528

 



快讯:看雪智能设备漏洞挖掘公开课招生中!

上传的附件:
最新回复 (30)
Ericky 2017-6-10 18:53
2

看别人写的设计思路都挺详细的,我也重新写了个解题的脚本,这里附上。

@kanxue


Ericky 2017-6-10 18:54
3
附件不显示

上传的附件:
Ericky 2017-6-10 18:55
4
好了  IDC脚本和IDB  都在里面
追风燕子 2017-6-13 14:19
5
java层还好,通过调用当前线程的StackTrace信息来反射调用方法去解密字符串,我是直接写java代码反射调用提取的class文件,发现当前线程不同,取的StackTrace信息里的方法也取不到,另so里的花太多了,也不会写脚本
Bet 2017-6-13 17:58
6
Ericky 好了 IDC脚本和IDB 都在里面
SO里面的字符串加密实现,一个字符串一个函数。请教这个是如何做到的呢,一般都是用宏实现的一个固定的解密函数。
ccfer 2017-6-13 18:13
7
我想说这个题有个意外解:madebyericky94528T
就是原解末尾可以多加个T
Ericky 2017-6-13 19:48
8
追风燕子 java层还好,通过调用当前线程的StackTrace信息来反射调用方法去解密字符串,我是直接写java代码反射调用提取的class文件,发现当前线程不同,取的StackTrace信息里的方法也取不到 ...
脚本在附件里
Ericky 2017-6-13 19:48
9
Bet SO里面的字符串加密实现,一个字符串一个函数。请教这个是如何做到的呢,一般都是用宏实现的一个固定的解密函数。
没有考到这个字符串解密哦
Ericky 2017-6-13 19:49
10
ccfer 我想说这个题有个意外解:madebyericky94528T 就是原解末尾可以多加个T
尴尬。。。被发现了。    是的  哭了。。再也不用这个编码了  太坑了
supercolin 2017-6-13 21:39
11
当我发现so里花太多的时候就放弃了F5,直接动态跟踪读汇编了。
另,还有个重试次数不能超6的检查~
Ericky 2017-6-13 21:44
12
supercolin 当我发现so里花太多的时候就放弃了F5,直接动态跟踪读汇编了。 另,还有个重试次数不能超6的检查~
恩  是的,这种做法跟我的想法不一样。可能算法太简单啦,以后我要汲取教训。嘿嘿  辛苦
houjingyi 2017-6-13 22:16
13

楼主,我用了你的脚本还是有跳转没有识别?


Ericky 2017-6-13 22:38
14




houjingyi

楼主,我用了你的脚本还是有跳转没有识别?

把不能识别的函数要删掉  要不IDA识别不了

Bet 2017-6-14 01:41
15
Ericky 没有考到这个字符串解密哦
恩恩,想学习下这块字符串加密的处理.
小熊ppt 2017-6-14 16:38
16

楼主,我照着你的idc的脚本运行了,发现ida view和hex文件确实去花了,但是点F5的时候还是没变,这是怎么回事?


这是显示已经去花的view

然后这是F5之后的,和以前一样,没有去花。

Ericky 2017-6-14 17:45
17
小熊ppt 楼主,我照着你的idc的脚本运行了,发现ida view和hex文件确实去花了,但是点F5的时候还是没变,这是怎么回事?这是显示已经去花的view然后这是F5之后的,和以前一样,没有去花。
把中间被识别成"函数"的块都要删掉  就可以了
小熊ppt 2017-6-14 18:03
18
Ericky 把中间被识别成"函数"的块都要删掉 就可以了
是在脚本里改吗,没看到啊,原谅我比较小白T^T
wingsbupt 2017-6-14 18:07
19

好的

小熊ppt 2017-6-14 18:13
20
wingsbupt 在IDA内怎么删除函数?
edit->function->delete  function
Ericky 2017-6-14 20:11
21
小熊ppt edit->function->delete function
嗯  对的
wingsbupt 2017-6-15 11:11
22
小熊ppt edit->function->delete function
你有修改成功吗?
小熊ppt 2017-6-15 11:23
23
wingsbupt 你有修改成功吗?
没,还是没用T^T
小熊ppt 2017-6-15 11:24
24
Ericky 把中间被识别成"函数"的块都要删掉 就可以了
能说的再详细点吗
Ericky 2017-6-15 11:57
25
小熊ppt 能说的再详细点吗
把check函数之间被IDA误识别成函数的"函数"全部delete掉,再F5
小熊ppt 2017-6-15 15:03
26
Ericky 把check函数之间被IDA误识别成函数的"函数"全部delete掉,再F5
get了,刚刚走通了,是把check和JNI_onload之间所有的函数都删掉,在左面Funtion  Window中就可以,之前好多代码折叠了,都没注意到,以为自己都删完了,其实还有好多没有删掉:-)
leidianl 2017-6-15 16:44
27




小熊ppt

[em_69]get了,刚刚走通了,是把check和JNI_onload之间所有的函数都删掉,在左面Funtion Window中就可以,之前好多代码折叠了,都没注意到,以为自己都删完了,其实还有好多 ...

00

小熊ppt 2017-6-16 13:48
28
楼主,问一下,可以把你的去花脚本转载到博客中吗,会注明出处的:-)
Ericky 2017-6-16 14:03
29
小熊ppt 楼主,问一下,可以把你的去花脚本转载到博客中吗,会注明出处的:-)
可以~
houjingyi 2017-6-19 10:08
30
还想请教一下楼主花指令是怎么加到so文件里面去的,用什么工具还是需要自己写程序呢
Ericky 2017-6-19 12:18
31
houjingyi 还想请教一下楼主花指令是怎么加到so文件里面去的,用什么工具还是需要自己写程序呢
自己写的程序哦
返回