首页
社区
课程
招聘
[新人求助]一个U3D手游的特别的SO壳,脱不掉,请大家帮我出出主意,指导一下。
发表于: 2017-2-8 21:54 5130

[新人求助]一个U3D手游的特别的SO壳,脱不掉,请大家帮我出出主意,指导一下。

2017-2-8 21:54
5130
RT:

没怎么破解过ELF程序和Android程序。看了半个月的资料还是搞不太懂。特来求助。
样本在附件中(有X86和ARM两套)。简单说明一下:
这是一个U3D的游戏中的一部分SO,其它我知道的不相关的so文件已经删除了。
游戏资源和名字怕本贴被和谐,就先不放上来。
需要脱壳的是libmono.so和libfp.so两个文件。
目的当然不是为脱这两个文件的壳,是要里面关于Assembly-CSharp.dll文件的加密算法。
1、已知信息
   (1)、这个程序是Unity 5.3.6f1开发的。libmono.so是经过修改编译的。部分功能被放到了libfp.so文件去了,比如我需要的mono_image_open_from_data_with_name的函数功能。
   (2)、这两个文件被加过壳,但不知道是被什么软件加过的。(推测是用的阿里加固的)
   (3)、用IDA动态调试,程序会好像会执行到其它逻辑上去但不会退出程序。
   (4)、自己编写程序,使用System.loadLibrary加载这两个库会直接退出。原apk也是用System.loadLibrary方法加载的却没问题。
   (5)、编写JNI程序使用dlopen()直接调用mono_image_open_from_data_with_name方法,想绕过这个壳。使用原版libmono.so能成功获取到信息,但是调用加壳后的libmono.so出错提示:dlopen failed:empty/missing DT_HASH in "libmono.so" (buit with --hash-style=gnu?)。试过修改编译参数来解决这个问题,但无果。应当是壳的原因。
   (6)、IDA静态分析,参考init_array等脱壳方法无果。找不到壳的入口点。

大概就是这些了,希望大家能帮一帮我。脑仁痛!
   


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不给apk怎么调,Σ( ° △ °|||)︴
2017-2-9 17:38
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
给的话不是会被和谐吗?
2017-2-10 20:44
0
雪    币: 5
活跃值: (271)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
什么游戏?
2017-2-13 14:36
0
雪    币: 5682
活跃值: (2085)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

得先把解密完的mono.so dump出来在分析mono_image_open_from_data_with_name 函数。建议直接动态调试给mono_image_open_from_data_with_name下断点。注意这段代码,就可以直接dump出来dll。dump可能有十几次。

源码

  1. char *pData = result->raw_data;  
  2.     int size = result->raw_data_len;  

dump so Code



2017-2-27 15:31
0
游客
登录 | 注册 方可回帖
返回