反编译Mono for android,Xamarin开发的APP

发表于 2018-12-17  1.09k 次阅读


前言:最近遇到了一个非java语言开发的APP,国内看了看也基本没有讲如何反编译的文章,只能去不存在的网站上去找找,找到的虽然很少,但现阶段也足够了。

apk包扔进改之理里,一看反编译出来的东西......

这都什么东西......第一反应是:加壳了?看一下java代码,函数调用都是mono文件夹下的,我们记住这个mono,看了看其他md5xxxxxx文件夹下的代码,都没啥营养,跟上面一样。

去翻了翻assets文件夹,没有什么可疑的东西,再去看看lib

四个so库文件,libmono这几个字符尤其引人瞩目,使用Unity3D制作的游戏肯定会有libmono.so这个东西,那我们这里后面怎么还跟了点别的?

遇事不决找度娘,看到了这个东西,此时已经明白这东西不是java编写的了。又去找了找相关信息,找个了包结构解析的文章,传送门

与文章中的包结构做一下对比后发现,嗯?我咋没有【assemblies】这个文件夹?嗯?【lib】文件夹里面的东西这么比我少了这么多?大概可以猜【assemblies】下的dll是被打包成so库了,至于打包到哪个就不知道了。

尝试扔IDA里跑跑。libmono-btls-shared.so

libmonodroid.so

libmonodroid_bundle_app.so

哦吼,看我们发现了什么,跟之前的包结构分析文章对比一下,确认dll都被打包到这里来了。本菜鸡不知道怎么解包,完。

度娘这次没给我带来任何帮助,只能去不存在的网站找找,找到了以下几个

https://reverseengineering.stackexchange.com/questions/16508/unpacking-xamarin-mono-dll-from-libmonodroid-bundle-app-so【修改后可用】

https://github.com/AigioL/unpack.libmonodroid_bundle_app.so【拉到本地编译时总提示缺少东西,无法测试】

http://maldr0id.blogspot.com/2015/03/android-malware-goes-mono-net-and-lua.html【Python,测试总是出错】

其他就不放了,自行去不存在的网站看

解包出来的DLL除了文件名对不上号以外没什么别的不对,我们用【dnSpy】来反编译解包出来的DLL(PS:DLL文件名需要重命名为正确名字)

mono for android会将你写程序集都打包在一个DLL中,其他都是API或.NET程序集,一般【APP名字.DLL】就是我们需要用【dnSpy】打开的DLL

https://github.com/0xd4d/dnSpy/releases

可以很清晰的看出结构

本帖完~~~

[su_members color="#77a2e1" login_text="这里有一些不能让人知道的东西,但登录后就能看到" login_url="https://blog.xtsxyll.com/wp-login.php"]真的完了 [/su_members]

 

 

 

 

 

 

 

 

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

心虽在此,逐梦繁星