马甲包上架

您当前的位置:主页 > 新加版块右 > 马甲包上架 >

【马甲包代上架】app 安全和ios及安卓马甲包代码混淆的demo的手把手教你

来源:未知 编辑:admin 发布时间:2024-02-17 共人阅读
 

Security-And-CodeConfuse(安全与编译码器)

App Security And CodeConfuse (app 安全和代码混淆的demo的手把手教你的详细教程)

本篇文章内容

  • 一)为什么要进行代码混淆
  • 二)代码混淆的两种方法(①宏替换 ②脚本实现替换)
  • 三)代码混淆参考的博客及说明

 

 

1)为什么要进行代码混淆?

iOS 的任何app都可以使用classdump对原程序进行dump,可以dump出所有源程序的函数所有信息:源程序所有函数类型,变量全部泄露及现在2018年ios新规,想要上架,其中一个必要的小技巧就是要做混淆,不管你是金融,棋牌,彩票,菠菜或者其他正规套壳马甲包都是一样的,除了隐藏便于ios或者安卓应用市场上架审核方面另一个就是安全!!!这样的话,让攻击者,也就是黑客们了解了程序结构方便逆向。因为在工程中,我们这些变量或函数命名都是有一定可读性的,例如跟用户名相关的,那一般里面会有 userName,跟密码相关的一般会有 passWord,这样定义也是为了我们自己代码可读性更强,我们修改的时候才更加的方便。但是我们相信,这么个定义法,我们只是希望方便我们自己,我们可不希望方便黑客们去破解我们的APP。 如果我们把自己的程序打包为ipa 使用class-dump ,dump出程序的所有头文件可以看到所有的头文件,打开头文件就可以看到所有的变量和函数了:

执行dump
执行dump

代码没混淆反编译结果,.h文件中函数如下图所示

代码没混淆的反编译结果
代码没混淆的反编译结果

代码混淆反编译结果,.h文件中函数如下图所示

代码混淆后的反编译结果
代码混淆后的反编译结果

也许你会问,对微信和支付宝看看他们的头文件可不可以呢?当然也是可以的,具体怎么做 参考我的这篇博客iOS 逆向导出app的头文件(逆向工程书籍补充),当然你也可以找更好的博客,看看微信的iOS开发人员函数命名是否规范,我看过,少数也是不规范的,大部分还是比较规范的! 为了阻止别人使用逆向工程修改我们的代码需要做反编译,微信的代码很多是没有反编译的。反向工程会带来许多问题,诸如知识产权泄露,程序弱点暴露易受攻击等。 很多人实现用Hopper搞定Mac迅雷的会员以及离线下载功能等等逆向工程,这些逆向之所以成功,是因为这些微信和迅雷的实现这些功能的核心代码没有进行代码混淆,如果进行了代码混淆,即使逆向了,找不到实现功能的函数,无法修改这些函数,就无法实现用Hopper搞定Mac迅雷的会员以及离线下载功能了。

为什么做混淆 ?还有更重要的原因:某一天某安全公司给你发一份安全测试报告,你的代码没做混淆(当然不只这一个风险),存在安全风险,boss 听说有风险肯定让你解决这个问题啊,我们公司就是这样的情况,我才做的的代码混淆的!! 如何进行代码混淆,经过我查阅资料,发现有两种方法,一种简单较low,一种复杂点档次高点!

下面介绍代码混淆的两种方法

2代码混淆的两种方法

##2.1简单的宏替换(很简单也有一点点low) ####2.1.1 打开项目新建ConfuseReplace.h 文件,把需要替换的函数名使用#define就可以(本方法其实可以用这一句就可以说完的)

#ifndef ConfuseReplace_h
#define ConfuseReplace_h]

#define sample        XZwTFgszVxFieZta
#define seg1        mviuwjseJZYYamwu
#define zheshi     uNCrcYEobhpPGLuf
#define xxxxxx     achfhhffhhfh

#endif /* ConfuseReplace_h */

####2.1.2 controller.h文件中

@interface ViewController : UIViewController

-(void)sample;
-(void)seg1:(NSString *)string seg2:(NSUInteger)num;
-(void)zheshi:(NSString *)string seg2:(NSUInteger)num;

- (void)xxxxxx;

@end

controller.m文件中

-(void)sample{  
}

-(void)seg1:(NSString *)string seg2:(NSUInteger)num{
}
-(void)zheshi:(NSString *)string seg2:(NSUInteger)num{
   
}
- (void)xxxxxx{ 
}

上面已经搞定了代码混淆,就是这么简单.每个函数名的串都是宏定义好的,也许有人会问,人家拿到了ConfuseReplace.h文件,那这么替换岂不是白搭,人家知道那个函数名和那个字符串对应啊,经笔者亲自验证,宏定义的字符串使用class-dump 是dump 不出来的,所以我们就放心的用

我们使用代码混淆让别人使用class-dump 反编译出我们的方法名是乱码,达到混淆的目的,混淆之后黑客使用class-dump 出你的头文件不知道你这个函数是做什么,就不能修改你的功能 ,使用这种混淆方法class-dump 后的头文件如下, 使用class-dump需要先安装class-dump,有如何安装class-dump和使用class-dump 导出.h文件的过程如下图所示

导出头文件替换的方式.gif
导出头文件替换的方式.gif

查看导出的头文件

导出的头文件查看.gif
导出的头文件查看.gif
- (void)XZwTFgszVxFieZta;
- (void)achfhhffhhfh;
- (void)didReceiveMemoryWarning;
- (void)mviuwjseJZYYamwu:(id)arg1 seg2:(unsigned long long)arg2;
- (void)uNCrcYEobhpPGLuf:(id)arg1 seg2:(unsigned long long)arg2;

这种方法的demo其实说这么多大家看一下Demo秒懂,唯一的难点是需要学习下class-dump导出头文件来验证是否混淆成功!教程都给你链接了,学不学就看你啦!

2.2使用脚本替换方法名(很简单也有一点点low) 第一、新建一个工程,在工程项目路径中建立一个confuse.sh、一个func.list文件先打开终端,然后 cd 到你的项目工程路径下:

cd 到项目工程路径下然后创建两个文件,一个 confuse.sh,一个 func.list:

注意点,不按照下面两个操作,运行脚本会报错:

目录结构不要错
目录结构不要错
层级目录不要错
层级目录不要错

创建两个文件这时候我们打开这个工程文件夹,可以看到,这两个文件已经创建好了:

我们创建的两个文件打开工程,把刚才创建的两个文件加进去,右键你的项目蓝色标志,然后选择 Add Files to...:

添加到工程中

添加进去了:

成功添加点击 confuse.sh**(confuse.sh,和func.list必须添加到NSUTest目录下)**发现还是空白的,什么都没有,现在要在这上面加上代码了:

需要添加的代码原脚本代码出自:http://blog.csdn.net/yiyaaixuexi/article/details/29201699 第二、在 .pch 文件中添加代码不要跟我说你的工程没有 .pch 文件,如果真没有,自行百度,这应该算是标配,常识来的。

#ifdef __OBJC__  #import <UIKit/UIKit.h> 
 #import <Foundation/Foundation.h>  
//添加混淆作用的头文件(这个文件名是脚本confuse.sh中定义的) 
 #import "codeObfuscation.h" #endif

写到这里,编译的时候是不是发现报错啦?刚才的 .pch 文件里面的添加的代码居然报错了:

报错了!不要慌,先把那句报错的先给注释掉:

先注释掉报错的这一行代码然后我们继续往下走! 第三、配置 Build Phase1:添加 Run Script

添加 Run Script

2:配置好 Run Script

配置好 Run Script然后再回到终端,同样先 cd 到工程目录下,接着我们要打开刚才 .sh 这个脚本文件的运行权限,因为默认是没有这个权限的,在终端输入以下指令:

打开运行权限回车,搞定,回到我们的工程,先 command + b 编译一下工程,然后再把我们刚刚注释掉的那句代码解开:

打开刚刚被我们注释掉的代码再次 command + b 编译,现在是不是编译通过啦?刚刚报错的,现在解决了! 基本上就搞定了,剩下的就是添加上我们想要混淆的变量名或函数名 第四、在 func.list 文件里,写入待混淆的函数名如果像下面这几个属性跟函数:

需要混淆的属性跟函数名那么就这在 fun.list 就这么列出来就好了:

列出需要混淆的,大功告成!现在 command + b 运行一下,然后在哪里看结果呢,请看这里:

运行结果可能这么看有点麻烦,那来个简单一点的:

查看哈哈,你会发现,多了好多宏定义,其实就是我们刚才的字段来的:

结果当然,这也只是最简单的代码混淆而已,APP安全还是有很多需要注意的。一步一步来吧! **最后需要说明,出现下图所示的这里并不一定说明代码混淆成功,只能说明你的脚本运行成功,.pch文件中一定要导入#import "codeObfuscation.h"**最好对自己混淆的代码 打包成ipa进行dump,查看你混淆的头文件的函数名是不是随机的字符串了.

Snip20160816_11.png
Snip20160816_11.png

##

mega
mega

github地址和Demo中的各个文件夹用途说明

demo文件目录
demo文件目录

对上图中的各个文件夹说明如下:

  • class dump header of confuseDemo: 里面放的是对confuseDemo(进行了混淆)打包为ipa,再执行class-dump,dump 出来的所有的头文件
  • class dump header of Demo2 confuse success 里面放的是对Demo2(进行了混淆)打包为ipa,再执行class-dump,dump 出来的所有的头文件
  • class dump header of Demo2 not confuse success 里面放的是对Demo2(没有进行混淆)打包为ipa,再执行class-dump,dump 出来的所有的头文件
  • confuseDemo 使用宏定义替换的demo,直接参考,移植到自己的工程就行
  • confuseDemo ipa 对confuseDemo 打包为ipa了,你可以使用里面的confuseDemo.app文件进行class-dump
  • Demo2 使用脚本进行代码混淆的demo ,你可以参考,移植到自己的工程中
 
风赚网专注购买苹果开发者账号购买苹果开发者个人账号购买苹果开发者公司账号购买苹果开发者企业账号购买iOS开发者账号iOS开发者账号购买苹果开发者账号购买苹果开发者账号个人购买苹果开发者公司账号购买苹果开发者企业账号购买出售苹果开发者账号出售苹果开发者个人账号出售苹果开发者公司账号出售苹果开发者企业账号出售iOS开发者账号超级签名TF签名企业签名苹果TestFlight签名苹果ios超级签名苹果马甲包上架开发苹果IOS应用商店代上架苹果APP代上架苹果马甲包上架苹果马甲包现包苹果马甲包购买出售购买苹果马甲包安卓马甲包上架安卓谷歌马甲包上架开发安卓谷歌APP代上架安卓谷歌马甲包现包谷歌马甲包上架安卓谷歌马甲包购买出售购买安卓谷歌马甲包安卓IOS应用商店代上架小米代上架华为代上架vivo代上架应用宝代上架oppo代上架软件著作申请苹果ASO安卓ASO小米ASO华为ASO谷歌ASO谷歌开发者账号小米开发者账号华为开发者账号应用宝开发者账号
 

  • 本文地址:http://www.fengtoup2p.com/xinjiabankuaiyou/majiabao/2024/0217/3718.html
  • 本文题目:【马甲包代上架】app 安全和ios及安卓马甲包代码混淆的demo的手把手教你



友情链接
风赚网 小米应用商店代上架 华为应用商店代上架 安卓应用市场代上架 IOS应用商店代上架 APP马甲包开发上架 购买苹果开发者企业 购买开发者个人账号 出售苹果开发者账号 出售开发者个人账号 imtoken马甲包 出售开发者企业账号 回收开发者账号 回收开发者企业账号 赚钱网站 数字钱包马甲包 苹果testflight签名 数字钱包 购买谷歌开发者账号 购买小米开发者账号 苹果APP代上架 苹果马甲包制作 赚钱网站 赚钱游戏 苹果马甲包定制开发 苹果马甲包 APP软件著作申请 数字货币 比特派马甲包 购买苹果马甲包 购买安卓马甲包 出售苹果马甲包 出售安卓马甲包 购买苹果开发者账号 购买华为开发者账号 安卓APP代上架 imtoken官方下载 应用宝APP代上架 苹果超级签名 苹果企业签名 APP软著代办 马甲包上架 苹果TF签名 苹果马甲包 马甲包上架 谷歌马甲包 安卓马甲包 OPendime马甲包 库神钱包马甲包 MetaMask马甲包 KeepKey马甲包 Polkawallet马甲包 Coinbase Wallet马甲包 hyperpay马甲包 AToken马甲包 极客钱包马甲包 Trezor钱包马甲包 Kcash钱包马甲包 Cobo钱包马甲包 Mist钱包马甲包 RHY钱包马甲包 imtoken官方下载APP bitpie官方下载 metamask官方下载 metamask马甲包 欧易官网 火币官网 币安官网 赚钱平台 苹果开发者账号购买 苹果开发者个人账号 苹果开发者公司账号 苹果企业开发者账号 苹果开发者账号 苹果开发者个人账号 赚钱方法 苹果公司开发者账号