实验吧 520app3 writeup

这道题在之前比赛的时候也遇到过,当时一脸懵逼……(虽然现在也是差不多

首先先看看怎么动态调试so,这是教程http://blog.csdn.net/feibabeibei_beibei/article/details/52740212

按着教程,把Debugger option的那三个选项给选上,之后也不用取消掉

然后断在linker

之后根据偏移找到​.init_proc

本来想跟下去,看看怎么解密数据的,但是报了个error,我也懒得跟了。。。

按F9,然后断下来之后,所有数据都解密出来了,这个时候可以用dd 把现在的so给dump下来

本来是可以​修复so,然后静态看出flag的,但是我也不会修。。。。。

所以直接在动态调试的代码上面看,因为在原始的so里面也知道JNI_Onload的偏移,所以这个时候可以根据偏移来找到JNI_Onload

实验吧 520app3 writeup_第1张图片

JNI_Onload大概就是这个样子,这个也是大概的套路

然后红色那里其实是J_create,创建了一个线程,sub_F8C是一个函数,不断的接收东西,但是只接收,什么也不处理

所以关键就在unk_711C那里

这里写图片描述

这里说明一下,上面那个图片是自己修了一半的半成品。。。所以变成那样。。。下面这个图片是动态调试的,每个人的地址都可能不同

这里有三个地址,第一个地址是指向字符串upload 的,第二个是指向字符串(Ljava/lang/String;)I ,第三个地址才是真正的地址

反编译之后会看到类似这样的东西,但是这里是逆向出来是connect之类的字符串

这里写图片描述

真正比较可疑的地方是这里,这里可以解出来两个字符串,第一个大概是帐号,第二个有Phone的才是flag,然后顺便看了下面,大概是调用了别的so,然后用浏览器来传数据的样子

实验吧 520app3 writeup_第2张图片

做题的话到这里就可以了,如果是真正逆向的话肯定就不止这样了

你可能感兴趣的:(二进制-逆向工程)