神威启示录相关

2016-04-17 6,144 ℃

官服1.0

前言

虽然曾经在梅露可弃坑后说了再也不碰乐元素的游戏,不过现在我反悔啦~

解密DLL

先查看Assembly-CSharp.dll,发现连“MZ”的开头都没了,看来是加密过了,只好上IDA,依旧是libmono.so的mono_image_open_from_data_with_name,结果发现SO也加壳了,嘛,意料之中。
那就上动态调试了,这次没兴趣去研究so的壳,加密DLL的算法也没一下子就看出来密钥和使用的算法,就懒得再去研究了,于是只dump出DLL,反正能修改就行了嘛

这里简单贴下步奏(其实这种东西随便百度一下到处都是吧
1. 修改APK的AndroidManifest.xml,在<application后面加上android:debuggable=”true”,打包后安装
2. 把android_server发送到手机,在adb shell里用root权限启动
3. 端口转发

adb forward tcp:23946 tcp:23946

4. debug启动app

adb shell am start -D -n com.happyelements.kamuy01.he/com.happyelements.gsp.android.unity.MainActivity

5. 打开IDA,选择附加-remote Armlinux/andoid debugger,在选择进程中找到com.happyelements.kamuy01.he,并记下左边的PID
6. 端口转发

adb forward tcp:8700 jdwp:PID

7. IDA附加游戏进程,然后运行app
8.

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

9. 等libmono.so加载后,ctrl+s查看libmono.so的基址,加上偏移0x001D18B4处下断点,原因如下图
QQ截图20160417054028
QQ截图20160417054056
运行到断点后,R1地址,R2长度,直接dump即可,那个sub_1D1708就是解密算法了,有兴趣可以进去看看

修改

dump出来的DLL也喜闻乐见的没混淆,那就直接修改了。。。
记忆中这种用碰撞器处理的游戏有非常简单的修改方法,不过试了几下没弄出来,只好用了看起来非常搓的方法,嘛,反正效果达到了就行
1. 无敌:

EnemySpecialHitExcutor
BulletHitExcutor
Hit函数里的“Player”字符串改成其他的东西

BeamHitExcutor
TriggerHit函数和TriggerExit里的“Player”字符串改成其他的东西

FighterHitExcutor
Hit函数里的“Enemy”字符串改成其他东西

Collider2DMotionBind
Hit函数开头改成永false

2.掉落拾取:
ScoreMotion
SupplyMotion
LateUpdate函数里if(xxx.activeInHierarchy…删掉后一个判断项

3.攻击力
FighterProxy
CalculateATK函数里最后直接乘上或者加上一个float

你懂得

未签名

百度云

40 条评论

  1. 看博主这么轻松,信手拈来的样子。
    然而我自己来的时候,
    配置ida,看懂汇编指令,配置安卓环境,开启调试,附加调试器,
    这每一个步骤都把我整的死去活来。
    虽然很不甘心,我还是决定放弃了。

  2. 借个楼问个问题,楼主改了日版雷霆战机(金属战记),不知道有没有兴趣改微信国服版呢?纯好奇~ :lol:

  3. 哥们,我又来了。你程序方面是学的那些内容,能不能告诉我,我抽时间自学一下 :shock:

  4. 不知大神是否有时间看一下bili服的神威,因为不懂C#所以各种懵比。。最近忙着做设计,等过段时间,在下也学些程序上的内容 :cool:

  5. :shock: 大大,B服的在下实在搞不定,有没有什么好的方法。 :shock: 学艺不精 搞不懂了。

  6. 博主能帮我也看看这个游戏的攻击力在哪里吗?找了半天找不到 但是貌似没加密http://apk.qcwan.com/apk/2061/766

  7. 请问大大,dump+修改后的DLL要如何加密回去呢?谢谢
    可以加个QQ吗 639072417

欢迎留言

7 + 5 =