分类

安卓应用安卓游戏

手机软件 手机工具

安卓修改大师

安卓修改大师 v10.16官方版

大小:92 MB

语言:简体中文系统:WinXP, Win2003, Vista, Win7, Win8, Win10

类别:手机工具时间:2022-02-17 18:03

安卓修改大师是一款功能强大的安卓应用定制和修改工具,可以在没有安卓应用源码的情况下,通过代码注入插桩的方式,通过修改SMALI,修改apk应用程序的界面和功能,反编译功能也是安卓修改大师一大亮点,可以查看安卓应用的源码,并且完美解除apk应用的登录限制、汉化、VIP限制、激活限制等,让您可以无限制的使用某些应用程序,安卓修改大师还内置了丰富的安卓应用模板,开发者可以直接拿来使用,小编为您带来了破解版的安卓修改大师,需要的朋友快来本站下载吧。

安装教程

1、下载本站为您提供的安卓修改大师破解版安装文件,双击执行安装

2、进入安装许可协议界面,勾选“我同意此协议”点击下一步

3、选择附加任务,是否创建桌面快捷方式,小编建议勾选创建

4、确认安装信息,点击安装

5、等待安装进度完成后,便可以直接打开安卓修改大师软件了

使用教程

一、安卓修改大师揭秘Android手游破解全过程

由于安卓修改大师的零门槛学习成本,让安卓应用程序的破解和二次开发变得相当简单,也正因如此,手机APP遭受破解和盗版问题长期存在,且愈演愈烈。尤其是手游行业,如刀塔传奇、植物大战僵尸、2048等知名游戏被破解的案例不胜枚举。破解者通过各种工具篡改游戏内存中的数值、参数或广告等,达到过关、升级、谋取暴利的目的。破解一款手游到底有多难,安卓修改大师(http://www.apkeditor.cn/)技术工程师为大家揭秘手游破解全过程。

《屌丝保卫战》是一款射击类游戏,游戏内涉及关卡、道具、虚拟金币等内容。通过简单几个破解步骤,即可完成关卡升级、虚拟货币充值等目的。

在游戏未进行任何安全保护措施前,破解者可以轻松将apk文件用winrar打开,将lib/armeabi/libcocos2dcpp.so文件解压出来之后用IDA(一款专业的逆向工具)打开。在IDA解析完成之后,搜索MyLoadBegin函数即可看到初始化的钻石数量,金币数量,vip等级等,这正是破解者进行破解的突破点。通过安卓修改大师进行反向工程后,即可获得项目源代码,找到金币配置的相关代码,如图1所示, 10000为金币数量,100为钻石数量。

图1 初始化金币和钻石数值

通过图2则可以判断该代码是决定VIP等级的部分。

图2 初始化VIP等级数值

找到初始化数据后,破解者就可以对其进行任意数值和参数的篡改了,图3和图4是对游戏内的金币与钻石的初始化数值进行篡改的前后对比图。

图3 金币与钻石数值篡改前

图4 金币与钻石数值篡改后

图5和图6是对VIP等级进行篡改的前后对比图。

图5 VIP等级篡改前

图6 VIP等级篡改后

经过上面的数值篡改,前台页面最终展示的结果如图7和图8所示,能看到,钻石数量由初始的100改成了99999,金币数量由10000改成了99999。

图7钻石和金币数量篡改前

图8 钻石和金币数量篡改后

同时,如图9和图10所示,VIP等级也已经从初始的VIP1达到了满级。

图9 VIP等级篡改前

图10 VIP等级篡改后

通过以上几个简单步骤,就完了对游戏的破解和篡改。对破解者而言,利用安卓修改大师来进行反编译,这只是分分钟的事情,而对于游戏开发者,却是多少个加班和心血被付诸东流的惨剧。

魔高一尺道高一丈,越来越多的手游开发者为避免重蹈覆辙,已经提高了应用安全意识,开始通过第三方加固服务或代码混淆等多重手段来防御破解者的攻击。

据安卓修改大师技术工程师介绍,由于大部分Android手游的盈利模式为广告和增值服务(如购买金币、装备、卡牌),所以提高APP的安全性、保护开发者的收入变的尤为重要。安卓修改大师不但可以防止八门神器、外挂等,更可以提供定制的so文件保护。前面提到的在破解手游时,libcocos2dcpp.so用IDA打开可找到函数MyLoadBegin,而进行过加固保护后, IDA已经无法整成解析MyLoadBegin函数,导致破解者无从下手,从而达到保护游戏的目的。

二、通过代码注入在apk中添加图片轮播功能

安卓修改大师可以在没有源代码的基础上,通过代码注入插桩的方式,添加任何界面和任何逻辑功能。本教程主要通过在一款名为“多媒体评价器”的app上,将原来的显示静态图片的图片框变为多图片轮播的功能。通过讲解,给大家一个明确的插桩方式添加业务逻辑代码的思路,抛砖引玉而已。

1、 需求描述: 根据用户的需要,需要在下述截屏应用的右侧添加图片轮播功能(目前是单独的图片,不能多张滚动),要求图片内置在apk中,放到Assets目录下面的指定文件夹中,图片数量不限,自动从该文件夹读取图片并随机自动轮播显示。

2、 在没有源代码的情况下,如果要在apk中添加额外的逻辑,实现自定义功能,需要通过代码注入的方式来实现。一般的做法是,先用Android Studio开发一个完整实现所需功能的Demo项目,然后编译为apk,并通过安卓修改大师将apk进行反编译,获得smali代码和资源文件,最终将获得的代码和资源文件整合到目标项目,重新打包即可。

3、 按照上述思路分步骤进行讲解说明,向大家完整展示如何通过插桩注入的方式,在任意的apk添加额外逻辑。

第一步:创建Android Studio项目,并实现一个从Asset目录读取图片,并在ViewPaper实现轮播功能的工具类。 代码如下:

public class MarqueeImageControl {

static ViewPager viewPager;

static ArrayList imageviews;

static Activity context;

// 图片资源

static Hashtable hsAd = new Hashtable();

static int preposition = 0;// 设置高亮的位置

static Handler handler = new Handler() {

public void handleMessage(android.os.Message msg) {

int item = viewPager.getCurrentItem() + 1;

viewPager.setCurrentItem(item);

// 延迟发消息

handler.sendEmptyMessageDelayed(0, 3000);

}

;

};

static boolean isdragging = false ;

public static class AdData {

public String Title ;

public String Url ;

public Bitmap image ;

public AdData(String Title, String Url, Bitmap image) {

this .Title = Title;

this .Url = Url;

this .image = image;

}

}

public static void show(final Activity context, int resid) {

try {

AssetManager assets = context.getAssets();

//获取/assets/目录下所有文件

String[] images = assets.list("pics" );

if (images == null ) return ;

for (int i = 0; i < images.length ; i++) {

hsAd.put(i, new AdData("" , "pics/" + images, null ));

}

if (hsAd.size() <= 0)

return ;

viewPager = new ViewPager(context);

viewPager.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT , ViewGroup.LayoutParams.MATCH_PARENT ));

ViewGroup view = context.findViewById(resid);

view.removeAllViews();

view.addView(viewPager);

context.runOnUiThread(new Runnable() {

public void run() {

imageviews = new ArrayList();

for (int i = 0; i < hsAd.size(); i++) {

AdData adData = (AdData) hsAd.get(i);

ImageView imageview = new ImageView(context);

AssetManager assets = context.getAssets();

InputStream in = null ;

try {

in = assets.open(adData.Url );

imageview.setImageBitmap(BitmapFactory.decodeStream(in));

} catch (IOException e) {

e.printStackTrace();

}

imageview.setScaleType(ImageView.ScaleType.FIT_START );

imageview.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT , ViewGroup.LayoutParams.MATCH_PARENT ));

imageviews.add(imageview);

}

viewPager.setAdapter(new Mypager());

viewPager.setOnPageChangeListener(new myon());

int item = Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2 % imageviews.size();

viewPager.setCurrentItem(item);

handler.sendEmptyMessageDelayed(0, 3000);

}

});

} catch (Exception e) {

e.printStackTrace();

}

}

public static class myon implements ViewPager.OnPageChangeListener {

@Override

public void onPageScrollStateChanged(int arg0) {

if (arg0 == ViewPager.SCROLL_STATE_DRAGGING ) {// 拖拽

isdragging = true ;

} else if (arg0 == ViewPager.SCROLL_STATE_SETTLING ) {// 滚动

} else if (arg0 == ViewPager.SCROLL_STATE_IDLE && isdragging) {// 静止

isdragging = false ;

handler.removeCallbacksAndMessages(null );

handler.sendEmptyMessageDelayed(0, 3000);

}

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override

public void onPageSelected(int arg0) {

int realpostion = arg0 % imageviews.size();

preposition = realpostion;

}

}

public static class Mypager extends PagerAdapter {

@Override

public int getCount() {

return Integer.MAX_VALUE ;// int类型的最大值

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

int realPostion = position % imageviews.size();

final ImageView imageview = imageviews.get(realPostion);

container.addView(imageview);// 添加到Viewpager中

imageview.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN :// 手指按下时的操作

handler.removeCallbacksAndMessages(null );

break ;

case MotionEvent.ACTION_MOVE :// 手指移动时的操作

break ;

case MotionEvent.ACTION_CANCEL :// 事件取消

handler.removeCallbacksAndMessages(null );

handler.sendEmptyMessageDelayed(0, 3000);

break ;

case MotionEvent.ACTION_UP :// 手指抬起时的操作

handler.removeCallbacksAndMessages(null );

handler.sendEmptyMessageDelayed(0, 3000);

break ;

}

return false ;

}

});

imageview.setTag(realPostion);

return imageview;

}

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

container.removeView((View) object);

}

}

}

需要重点说明的是,为了减少整合的复杂度,插桩的代码尽量放到单独的类里面,入口的调用方法尽量是静态方法,例如本例的入口调用函数是:

public static void show(final Activity context, int resid)

该方法有两个参数,一个是当前Activity类入口,另外一个是插入轮播图片的宿主布局的资源id。插桩代码放到单独类的好处是,反编译后将该类所有的生成的smali文件全部拷贝到目标项目中即可,不用考虑彼此之前的关联关系,也不用考虑类和变量的耦合问题,降低整合的复杂度,使整合更简单。

在Demo的Activity测试页面中调用上述的方法为:

MarqueeImageControl.show(this , R.id.pic );

上述的R.id.pic是xml布局中定义的一个类似于LinerLayout这样的布局,作为放置轮播功能的控件宿主。

代码为:

<linearlayout< p="">

android :orientation ="vertical"

android :id ="@+id/pic"

android :layout_gravity ="center"

android :background ="@color/cardview_dark_background"

android :layout_width ="300dp"

android :layout_height ="600dp" />

在将来插桩整合的时候,目标应用中也应该有这样的控件,用来接纳需要添加进来的轮播功能。

确保经过测试,该demo实现了相关的功能,然后通过Android Studio的打包功能,将Demo项目打包为apk备用。

第二步:将上述Demo的Apk文件通过安卓修改大师反编译,反编译后获得smali代码,将获得的代码和资源复制到目标项目中进行整合。

反编译demo项目并打开目录,同样也打开目标项目的项目目录,如下图:

将上述demo反编译生成的类拖拽到目标项目的smali目录下,demo目录下面的类文件请通过类的包名路径在上述目录中依次展开找到。需要植入的插桩的smali类文件可以放到目标项目的smali目录下面的任何目录,建议直接放到smali根目录或者自定义创建的目录中,方便查看和修改。

通过上述方法,将核心的类文件已经集成到了目标项目的smali源代码目录中。如果你实现的类文件有第三方引用的类,需要将相关的类也要一并通过上述方法拷贝到目标项目的smali目录中(例如demo类用到了androidx类,需要将androidx类一并拷贝到目标项目中)。

第三步:通过安卓修改大师的代码布局定位功能,定位要添加和修改的布局控件。

确保手机和电脑连接成功,安卓修改大师底部处于连接状态,点击修改大师左侧的代码布局定位功能,手机上面浏览到需要添加和修改布局的页面,然后点击上述页面上的抓取界面布局按钮,即可获取当前页面的界面布局和布局层次情况。点击左侧预览图的需要添加插件的区域,右下角会显示该控件的id名称(iv_show),点击右侧的定位布局和代码,将自动进行代码和布局查找工作。

通过上述的界面抓取功能,也同时获得该界面的类名和包名。见上述截图的上部。类名为com.yntd.jhpj/com.yntd.jhpj.ui.MainActivity,请牢记,后面有用。

系统自动查找到该图片控件的布局和控件:

双击查询结果,将进入布局xml界面,下图列出来的是该控件的布局xml(下图下面的红框),一般如果要做界面插入,建议不要动原来的界面元素,因此我们把原来的图片框元素添加 n1:visibility="gone" 进行隐藏,在该元素的上部添加了单独的布局(用来作为轮播控件的宿主控件)元素用来放置新添加的轮播功能(下图的上面红框),请注意为了保持界面布局一致性,确保新插入的布局控件和原来的控件的布局和大小尺寸的属性一样。

插入的布局xml:

到此为止已经添加了宿主控件,为将来显示轮播图片打好了基础工作。新增加的这个布局为了方便程序中调用,给定了新的id,目前该id还没有对应的资源id(前面写的注入的类需要宿主的资源id参数),布局中临时定义的id,需要重新编译后才能自动生成资源id。

点击左侧的打包/签名工作,然后打开的页面中点击项目打包按钮,将自动进行项目打包。

确保能顺利打包完成,打包成功后,新添加的界面布局控件id才会生成资源id,切记。我们前面为那个布局新定义的id为“iv_pic”,因此点击安卓修改大师面板左侧的“搜索替换”功能,并搜索“iv_pic”,在结果中有一条public.xml文件的搜索结果,该文件里面就是全部的资源对应的资源id,记录下iv_pic对应的资源id(见下面的红框),后续有用。

第四步:通过插桩方式插入注入的代码。前面已经通过界面抓取获得类名com.yntd.jhpj.ui.MainActivity,在安卓修改大师左侧的代码布局修改功能,点击人代码树状导航,按照上述类路径依次点击找到该类,一般是在oncreate方法里面添加注入方

法。

插入的代码行为:

#集成的代码

const v0, 0x7f0800e7

invoke-static {p0, v0}, Lcom/kongyu/project/MarqueeImageControl;->show(Landroid/app/Activity;I)V

两个参数分别为当前的类的引用p0和上述新创建的宿主控件的资源id,改调用方法为smali语句,如果不熟悉java对应的方法如何用smali调用,可以在前面第一步的demo里面写好调用示例,第二步反编译的时候即可获得对应的smali写法。

至此,已经完整实现了通过插桩的模式插入自定义的逻辑代码,这种方式适合在任何apk中插入任何逻辑和任何布局,只不过是复杂度的区别罢了。

一切修改完毕后,注意在编辑器右上角点击保存,然后回到打包签名进行项目打包,手机点击电脑的话,会自动在手机上面安装打包后的成果apk。

本次教程到此结束,文中提及的资源和代码,以及项目apk在文中已经附带,大家可以跟随学习。

功能介绍

任何反编译安卓应用

自由定制任何没有加固过的APK安装包,可以修改应用程序图标和应用程序名称、替换界面吗上面的任何文字和图片、翻译或者汉化制作多语言版本,更支持通过高级的SMALI代码,实现对应用软件的破解。

海量安卓应用,游戏模板

提供海量最新最全的应用作为定制模板,可以直接下载后进行反向工程、破解、修改、查看源代码、查看安装包信息等操作(部分应用由于做了加固,暂时不能进行反向工程)。

多渠道打包发布

通过已经打包的APK安装包作为模板,反编译后,动态修改配置文件或者SMALI代码中的渠道标志来实现批量重新多渠道打包,由于不是源代码级别的打包,所以大大提升了批量打包的速度和效率。

随机包名,应用名打包

对于成人影院、成人游戏等APP,经常会出现被手机安全软件和手机管家类软件报毒的情况,可以通过本功能定时随机更换包名和应用名称重新打包,再配合网页下载程序,用户就可以实时下载到最新的安装包,避免了报毒等情况。

查看安卓应用源代码

经过对APK安装包进行反编译,然后通过反映射的方式获取源代码。反编译获取的JAVA代码适合对源代码进行分析,查看应用内部逻辑,不可进行反编译,反编译工程只能在SMALI代码基础上修改。

众多安卓应用反编译工具

软件还提供了大量的小工具,用来查看安装包信息,并可以在手机连接电脑的情况下,查看手机信息、实时日志、安装和管理手机的应用程序、管理手机的文件等等,并可以直接定制修改手机已经安装的应用程序。

软件特色

1、自动识别图像资源,并提供该类资源的快捷替换功能,方便修改这类图片资源。

2、所有操作步骤、结果都会显示在日志窗口,方便查看。

3、可视化、全自动的反编译、编译、签名;支持批量编译APK。

4、以树形目录管理反编译出的Apk源码文件,浏览、打开、编辑、都可以统一在软件中实现,不同项目间可以自由切换,方便快捷。

5、内置Log等调试工具,方便应用进程、logcat输出查看等进阶操作,监测修改apk的运行状况,以助于分析和查找错误。

6、内嵌Unicode、UTF8、ANSI编码互转工具,方便硬编码文字的检索以及相关汉化类修改。

7、内置代码编辑器,支持包含(但不限于).samli、.xml、.html等各类格式文件的语法高亮显示,根据 smali文件格式的自动匹配相应语法;同时支持使用系统编辑器来编辑代码文件。

8、内置ADB功能,包括使用ADB向设备(或模拟器)安装、卸载、运行修改后的apk,进行测试,并可管理所连接设备的存储文件(包括系统以及用户文件)。

9、内置基于文件内容的单行或多行代码关键字搜索、可显示无穷多个搜索结果以标签的形式分门别类;可指定搜索范围(整个项目或在指定的文件或文件夹中搜索)、大小写,编码类型;从此无需再借助其他工具,即可轻松的完成搜索任务。

10、默认支持记事本、计算器等小工具,开放设置接口可根据本人需要自定义外部工具,满足个性化需求。

更新日志

v10.16版本

1、网站打包增加了下拉刷新网页的开关,并强化了禁止网页复制的功能

2、网站打包去掉了短信和通讯录相关权限和功能,打包更加绿色轻便

3、网站打包增加和适配了视频全屏的功能,并能自动识别视频的横竖屏,并进行屏幕方向的自动适配

4、增加了内置浏览器模式的网页插件,对于需要在应用内启动的时候或者点击某个按钮的时候需要弹出内置网页,

∨ 展开

同类推荐

相关下载

热门游戏

下载排行

热门关键字

  • 刷机工具
  • iOS工具
  • 手机模拟器
  • 手机管理
  • 手机工具