Unity3D之脚本反编译点滴记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D之脚本反编译点滴记录相关的知识,希望对你有一定的参考价值。
Part1:
参考文章:
http://bbs.pediy.com/showthread.php?t=209353
针对加密方式:对dll进行破坏二进制的加密方式
平台和环境:win7,jdk,android-ndk-r10e,Cygwin,adb,安卓真机(需要root权限)或者模拟器(本篇中使用夜深模拟器)
Part2:
配置JDK
新建JAVA_HOME,示例路径C:\Program Files\Java\jdk1.7.0_80
Path中追加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
安装Cygwin
示例安装目录:C:\cygwinpath
配置adb
示例安装路径C:\adb
Path中追加C:\adb;
配置NDK
示例解压目录:F:\android-ndk-r10e
编辑文件:C:\cygwinpath\home\Administrator\.bash_profile
加入,并保存
NDK=/cygdrive/f/android-ndk-r10e
export NDK
验证配置对不对,打开cmd
jdk:javac回车
adb:adb回车
打开Cygwin命令终端,输入cd $NDK回车
Part3:
试着编译ndk demo,打开Cygwin命令终端,
输入cd $NDK回车
输入cd samples/hello-jni
输入$NDK/ndk-build回车
刷屏ing.....
.....如果不刷屏,自己找原因吧
写自己的so程序以及配置工程
在同目录下复制一份hello-jni,并改名为hello-a
进入hello-a中,只保留jni目录,其他的全部删除掉
继续进入jni目录中,把hello-jni.c改名为hello-a.c,并写下自己的c程序,如参考文章中的代码
编辑Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:= helloa
LOCAL_SRC_FILES := hello-a.c
include $(BUILD_EXECUTABLE)
编辑Application.mk
APP_ABI := armeabi-v7a
就绪,用Cygwin进入到hello-a目录中,cd $NDK/samples/hello-a回车
继续输入$NDK/ndk-build回车
刷屏ing....
在目录hello-a\libs\armeabi-v7a中找到编译好的helloa文件
Part4:
在unity 安卓版的游戏中找到Assembly-CSharp.dll,libmono.so两个文件,连同上边的helloa文件,一起拷贝到c盘根目录下
打开夜深模拟器,用adb连接
打开命令提示符,输入adb connect 127.0.0.1:62001回车
复制文件到安卓中,一次在命令提示符中执行
adb push c://Assembly-CSharp.dll /data/local/tmp
adb push c://libmono.so /data/local/tmp
adb push c://helloa /data/local/tmp
用adb进入到安卓/data/local/tmp中
adb shell回车
su回车
cd /data/local/tmp回车
提升helloa权限,chmod 777 helloa
执行helloa,./helloa回车
把最终生成的解密dump.dll导出
先退出之前的执行,exit回车
然后执行adb pull /data/local/tmp/dump.dll c://
引发深思
此方法能解一般处理的游戏,按照参考文章中的代码和作者说的,解密的局限性也比较大,
事先得先分析(用ida pro)游戏有没有对libmono.so进行封装,怎么封装的,
然后改写我们的解密代码(特别是对应的函数原型,和传入参数)
有人提到说可以利用内存抓取进行破解,成功率极高,方法未知。。。望知道的兄台指点一下,原文https://www.zhihu.com/question/25414422
以上是关于Unity3D之脚本反编译点滴记录的主要内容,如果未能解决你的问题,请参考以下文章