iOS游戏如何防御外挂及IAP破解

iOS应用安全加固工程化实践:从代码混淆到运行时防护 在移动应用开发领域,代码保护与防逆向是保障知识产权和商业利益的核心技术。其基本原理是通过对编译产物和运行时环境进行干预,增加攻击者分析和篡改的难度,从而提升应用的整体安全性。这项技术的核心价值在于为开发者构建主动防御体系,将安全能力从“事后补救”转变为“事前设计”,有效应对内购破解、逻辑窃取、重打包等常见威胁。典型的应用场景包括金融支付、游戏核心算法、以及任何包含敏感业务逻辑的iOS应用。本文聚焦于iOS平台,深入探讨了包括控制流扁平化、字符串加密等代码混淆技术,以及反调试、环境检测等运行时保护机制在内的工 阅读详情

今年3月初写过一篇《iO平台游戏安全小议》,到现今已有7个月了。在这段时间内,iOS平台上的安全问题也产生了不小的变化。从作弊方式来说,从以前稍有门槛的手工操作(命令行操作)发展成了傻瓜式的只需要点击按钮的外挂工具的普及,使得作弊方式可以大量的泛滥。从防御方式来说,发展虽然缓慢,但也有了一定的有效对策。

  游戏,无论是运行在哪个平台,PC机,掌机,街机,电视还是手机上?无论是单机,弱联网的,强联网的?无论是否具备客户端,网页游戏还是客户端游戏,本质上就是数据与指令。总的来说由三部分组成

  1.负责逻辑处理即指令部分

  在windows上它有exe,dll后缀,好识别(还有swf,air等后缀),基本是PE32 executable格式。

  在linux/unix系统上为ELF executable,so格式

  在mac/iOS上它为Mach-o executable,dylib格式

  在Android上它为dalvik dex,so格式

  无论是啥格式,都是可以依靠调试与逆向来查明或修改其处理逻辑,唯一的区别就是实现语言和运行平台的不同带来的使用工具和逆向难度有所不同。

  实现语言不同,决定了得到的汇编代码还是源码,像java和as可以直接获得源码,而objective-c(c或类c)目前只能获得汇编代码。

  运行平台不同,得到了汇编代码也会有所不同,是Intel的还是arm的,目前手机上都是arm的。

  2.留在本地的数据(内存+硬盘)

  雁过留痕,运行在本地的游戏,会将数据写入内存和硬盘。这也是游戏作弊的重点对象。

  通过修改写入硬盘的数据作弊的外挂,往往会有xxx(游戏名)存档修改器,xxx(游戏)存档补丁/插件这种直白的名字。

  (存档修改是个比较综合的半手工作弊方式,计划专门为其写一篇博客)

  通过修改写入内存的数据作弊的外挂,名字则会有趣得多,windows有名的有cheat engine,手机上的有八门神器

  


iO平台游戏安全再议之八门神器内存修改,IAP Free游戏内购破解的防御 - danqingdani - 碳基体

  

iO平台游戏安全再议(八门神器+IAP Free游戏内购破解的防御) - danqingdani - 碳基体

  很明显cheat engine要比八门神器功能要强大的多,它支持多种数值类型(包括自定义数据类型)和扫描方式,八门神器虽然支持的类型较少但也足以应付常用游戏数据类型的修改了,并且我相信只要手机游戏继续繁荣,在不久的将来其功能毕将更加完善。

  内存修改器对游戏收费与游戏寿命的破坏非常大。对大多数玩家而言,游戏过程就是打怪升级的一个过程,给一个目标,然后达成它,无论目标是获得更多的积分还是争取更多的游戏币。如果这些数值不做加密处理,是非常容易使用工具定位和修改成指定的数值。

  对玩家而言,如果目标容易达成,游戏的乐趣也随着减少了,可能会寻求另一款游戏。而且免费可以获得的东西大多数人是不会再花费获得了。即使玩家是真正喜好游戏的,作弊获得好处的人带来的不公平感也会迫使玩家离开游戏。

  想想这个场景,如果1000个游戏币需要100块人民币,当你发现通过八门神器可以不花一毛钱将游戏币的数量改成999999的时候,你会再花费吗?

  要保护游戏不被八门神器这种工具破坏,就要从工具的原理,修改对象及缺陷着手处理。

  内存修改工具的原理都是通过不断改变待修改数据的大小来缩小地址范围来定位实际的数据存储地址并给以修改。

  玩家的修改对象是在游戏运行过程中,存储在内存中的可以在游戏界面看到变化的游戏数值,比如说游戏币,道具数量,等级,HP,攻击力等等。

  由此我们可以得知八门神器只能定位到特定数据类型(浮点型数据,自定义数据,和需要服务端做验证的数据都不能修改)的数值,并且只能进行精确数值的修改,而普通玩家也只会修改在游戏界面有回显的数值。

  因此我们可以将存储在内存中的数据经过加密算法来进行转换(将游戏数值由常规类型变成自定义数据类型),使得内存修改器不能定位到搜索的数值,也就无法进行修改。

  例如

  int c = 30000 常规存储为 0000 0000 0000 0000 0111 0101 0011 0000

  可以通过特定算法来进行位转换和位移动操做来变成自定义存储格式,例如存储为0000 0000 0000 0000 0001 1100 0000 0010

  这种加密方式可以防御普通玩家使用工具进行修改,但抵挡不了逆向高手获知加密算法逻辑后定制的特定搜索修改器,但已经从很大程度的防御了普通玩家作弊。针对外挂专业工作室的防御,将是逆向与反逆向的领域了,相信只有火到一定程度的游戏才会引起这些人的专门破坏。

  最后,为了减轻定位到修改数值后造成的破坏,最好在调用该数值的时候,检测一下数值的逻辑范围,将过于夸张的数值判定为非法。

  3.传输在网络中的数据

  游戏从app store中下载需要联网,游戏中有购买行为(例如购买道具,解锁关卡)也需要联网,如果游戏需要在开发商服务器上存储数据或进行逻辑处理(例如登录),也是需要联网的。

  总的来说,联网过程涉及到三方,app store,开发商服务器(即游戏服务端),和玩家设备(即游戏客户端)。这三方间的数据传输,只要经过玩家设备的都可以通过代理工具捕获并进行修改。

  对于需要在登录验证并在服务端存储数据的游戏,最常犯的错误,就是在玩家登录游戏后,将服务器拉取的游戏信息明文返回给客户端。

  例如来自同一公司也具备同样错误的space city和contract killer游戏,就是登录的时候,从服务器返回当前的金币数TapPoints,我们可以通过抓取服务器返回给设备上应用的数据包,将金币数量修改为想要的数量就ok了。

  

iO平台游戏安全再议(八门神器+IAP Free游戏内购破解的防御) - danqingdani - 碳基体

  

iO平台游戏安全再议(八门神器+IAP Free游戏内购破解的防御) - danqingdani - 碳基体

  这种在设备上安装代理工具,劫持并修改通信包的方式,是具备悠久历史的,也叫中间人攻击MITM(man-in-the-middle)。唯一的区别是不同的运行平台有不同的工具,越成熟的平台工具越容易操作越方便普及,而不成熟的平台则需要命令行操作和数据包分析等专业知识,操作门槛越高游戏相对越安全。

  当然安全也取决于破坏对象带来的利益是否具备足够的吸引力。而IAP(in-apple-purchase)游戏内购(即通过IAP下载到设备内的额外的解锁内容,英文全称是DownLoadable Content,通常简称DLC)解锁就具备了相当大的吸引力,在这一功能上,破坏方法也是非常精彩的,从早期的iap cracker工具,到现在非常流行的iap free工具,还有非越狱机也可以使用的通过伪造IAP认证服务器的俄罗斯游戏内购方法,都非常好用。

  (补充:游戏内购部分的本质就是需要付费才能下载到本地的游戏内容,而通过存档修改覆盖也可以达到解锁的目的,网上有名的游戏内购解锁网站也多是有偿提供这种存档来解锁盈利,计划在下篇存档修改博客中具体介绍这种方式)

  从iap cracker发展为iap free,我们可以看到外挂功能升级的一个过程。

  (1)iap cracker

  我们从IAP的API上分析iap cracker到底做了什么,相信具备IAP功能的游戏中一定有这样一段类似的代码

  

iO平台游戏安全再议(八门神器+IAP Free游戏内购破解的防御) - danqingdani - 碳基体

  开发就是根据transaction的类型来决定内购状态变化所要呈现的东西的, 购买状态transaction的值有四种

  SKPaymentTransactionStatePurchasing

  SKPaymentTransactionStatePurchased

  SKPaymentTransactionStateFailed

  SKPaymentTransactionStateRestored。

  而所有交易成功的消息就会进入到SKPaymentTransactionStatePurchased这个case中,而iap cracker就是模拟了返回交易成功的消息而进入到了这个case中。如果不做下一步验证,当我们应用中收到这个“假的”交易成功的消息就会直接给用户加钱,加设备,加各种东西,iap cracker运行的整个过程甚至都无需联网验证。

  有趣的是这款软件在使用说明上就标注是使用了什么样的漏洞,只要不需要游戏服务器再次验证的处理方式就会中招。

  而针对这个问题,apple给开发者的建议就是验证付费收据,如果检验失败,则将该用户(设备udid)加入黑名单,进行封号处理,封号阶段,从该设备向服务器发送的所有请求都将被拒绝。(有趣的是这一处理方式滋生了另一个叫UdidFaker的辅助工具,可以随机伪造设备的udid。)

  

iO平台游戏安全再议(八门神器+IAP Free游戏内购破解的防御) - danqingdani - 碳基体

  https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html#//apple_ref/doc/uid/TP40008267-CH104-SW1

  验证的重要步骤如下:

  1.将提取的订单信息转换成如下json格式

  {

  "receipt-data" : "(receipt bytes here)"

  }

  2.将生成的json数据通过HTTP POST方法传入到https://buy.itunes.apple.com/verifyReceipt去验证

  3.app store server验证完成后,会返回以下格式的json数据,根据status的值就可以判断订单是否合法,只有为0才是合法的,如果不为0,则是非法的。

  {

  "status" : 0,

  "receipt" : { (receipt here) }

  }

  以下是合法的订单情况

  {“receipt”:{“original_purchase_date_pst”:”2012-07-12 05:54:35 America/Los_Angeles”, “purchase_date_ms”:”1342097675882″, “original_transaction_id”:”170000029449420″, “original_purchase_date_ms”:”1342097675882″, “app_item_id”:”450542233″, “transaction_id”:”170000029449420″, “quantity”:”1″, “bvrs”:”1.4″, “version_external_identifier”:”9051236″, “bid”:”com.zeptolab.ctrexperiments”, “product_id”:”com.zeptolab.ctrbonus.superpower1″, “purchase_date”:”2012-07-12 12:54:35 Etc/GMT”, “purchase_date_pst”:”2012-07-12 05:54:35 America/Los_Angeles”, “original_purchase_date”:”2012-07-12 12:54:35 Etc/GMT”, “item_id”:”534185042″}, “status”:0}

  (2)iap free

  iap free则在iap cracker的基础上(伪造SKPaymentTransactionStatePurchased 的transaction状态),在你与app store server进行收据验证的步骤中,增加了伪造假收据的功能

  

iO平台游戏安全再议(八门神器+IAP Free游戏内购破解的防御) - danqingdani - 碳基体

  

iO平台游戏安全再议(八门神器+IAP Free游戏内购破解的防御) - danqingdani - 碳基体

  最新的iap free针对开发商会根据UDID或mac地址这些设备唯一标识来进行封号处理推出了UDID和mac地址伪造功能。

  (3)俄罗斯游戏内购方法(伪造成app store server)

  第一步:注销已登录的apple ID

  第二步:在设备上安装证书文件

  http://system.in-appstore.com/certs/cacert.pem

  http://system.in-appstore.com/certs/itcert.pem

  第三步:修改设备接入wifi的DHCP设置中DNS服务器栏,替换为黑客提供的地址

  【二、三步就是通过在iOS设备上安装伪造的SSL证书,修改DNS表将正常请求重定向到攻击者搭建的服务器上,使其可以伪造成app store server,无论订单是否合法,都返回合法的状态来达到iap内购破解的目的】

  第四步:进入游戏,打开购买链接,在如下弹出框中选择like,然后随便输入非真实的apple id,就可以购买成功了。

  和iap free类似,最终目的都是返回购买成功的订单数据,只不过iap free是在游戏客户端将来自app store server的验证数据由失败状态改成成功状态。而俄罗斯游戏内购,则是伪造成app store server,让其直接返回购买成功的验证数据。

  这种即使有了IAP收据验证,也能被iap free和伪造app store server进行游戏内购破解的关键原因是,收据验证过程是由iOS设备与app store server直接验证的。

  再次强调,从iOS设备上游戏客户端返回的数据是不可信的,是可以篡改的。如果要保证验证过程的安全,也只有由游戏服务器与app store server进行直接验证。

  苹果针对(2)(3)这种收据验证漏洞,也给出了相应的处理方法

  https://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/_index.html#//apple_ref/doc/uid/TP40012484

  第一种情况:收据验证,是由开发商自己的游戏服务器与app store进行验证(不经过iOS设备上的游戏客户端)

  不会受iap free和俄罗斯内购破解的影响,是苹果推荐的最佳验证方式。安全的验证流程应该如下图所示

  

iO平台游戏安全再议之八门神器内存修改,IAP Free游戏内购破解的防御 - danqingdani - 碳基体

  通过看这个流程图,我们可以得知之前iap实现所犯的错误,

  iap cracker有效的原因是由第8步到第9步,iOS设备上的应用直接相信了伪造的SKPaymentTransactionStatePurchased状态。

  iap free和俄罗斯内购破解有效的原因是收据信息由app store和客户端直接验证,客户的相信了伪造的购买成功的收据数据。

  正确的过程应该是由第11步到12步,由游戏服务器与app store直接通信去验证收据数据。如果收据合法则下发购买部分内容给客户端应用(第12步到第14步)。

  第二种情况:收据验证,是由游戏客户端直接与app store进行验证

  虽然苹果建议开发商最好采用第一种情况的验证流程,但无疑这种流程增加了服务器与app store的通信验证等待时间,针对无线网络不稳定的情况下,可能导致支付过程中端,影响用户的付费率。

  我观察到不少iOS应用,其中不少是国外的知名游戏开发公司出品的(例如日本的音乐类游戏乐动魔方就完全可以内购破解)仍然选择由客户的验证收据,或者连收据都不验证。不知道是否有这方面的原因。

  对坚持由客户端直接与app store进行验证的,苹果也给出了以下对策:

  1.检查用于连接app store server服务器的SSL证书,确认是否是EV 证书(Extended Validation SSL Certificate)

  2.检查返回的验证信息是否与SKPayment对象中的信息一致

  3.检查收据上的签名是否合法

  4.检查transaction ID是否唯一

  并提供了相应的验证实现代码https://developer.apple.com/library/ios/releasenotes/StoreKit/IAP_ReceiptValidation/VerificationController.zip

  苹果提供的两种验证方式都属于事前验证,只有在通过验证的情况下才下发购买部分内容给客户端。

  在早期的iap实现中,一般采取的是事后验证,即在交易完成后,将收据存储到服务器上,然后再次与app store server对账,非法交易的给予封号处理,为了怕影响玩家情绪,往往只对超大金额的玩家给予惩罚处理,惩罚其失去联网部分功能,但对于弱联网的游戏,这种惩罚并不能带来威慑。并且在游戏推广争取用户阶段,有封号,也就有相应的解封操作,解封过程一般采取客服人工解封,在iap free这种傻瓜式工具泛滥的情况下,大量的非法订单带来的封号解封处理必然增加了客服工作量。

  总的来说,游戏安全的发展是与外挂博弈的过程,因为太多的原因,或是游戏性能,或是玩家体验,或是人力成本,有效防御总是滞后于攻击手段的。但正是这些有趣的外挂,让我们游戏实现更具挑战。

  下一步计划打算写写iOS游戏存档修改(包括依靠存档替换进行内购解锁)

[机器学习] 第二章 模型评估与选择 1.ROC、AUC、Precision、Recall、F1_score 1.非均衡分类问题 类别分类代价不等 例如:垃圾邮件过滤中,我们希望重要的邮件永远不要被误判为垃圾邮件。 还有在癌症检测中,宁愿误判也不漏判。 此时分类错误率的度量不充分 所以,在分类中,当某个类别的重要性高于其他类别时,可以使用Precison和Recall多个比分类错误率更好的新指标。 条件阳性(P) 数据中真实阳性病例的数量 条件否(N) 数据中实际否定案例的数量 Precision(查准率): 预测为正例的样本中真正正例的比例。 eg: 99正 1负 预测 1正√ 99负 TP/(TP 阅读详情

相关推荐

栅格数据做相关性分析前的预处理(批量定义投影、栅格投影、重采样)

最近在做两个栅格数据的相关性分析,这个最主要的是两个栅格数的行列号是一致的(也就是说坐标系、分辨率一致),那么标准的栅格数据的分辨率是以米的形式存在的,但是有一些栅格数据是以度为单位存在的,所以在做分析前,一定要先把其转换为米,否则在重采样的时候就会出错。(相关文章——栅格数据以度为单位变为以米为单位的简单做法)当然,在变其分辨率的单位前,一定要将其坐标系转换为一致。所以就有以下的步骤(如何将两个栅格数据的坐标系、分辨率的单位和分辨率一致) 1.首先,要看两个栅格数据的坐标系是否一致,如果不一致,要先统一到

qq_41828818的博客 8313

游戏挂检测的2个策略与高端思路

游戏挂检测的2个策略与高端思路

MATLAB GUI 水果成熟度分级系统设计与实现

本文基于 MATLAB GUI 设计并实现了一款水果成熟度分级系统,能够准确地评估水果的成熟程度。在实现过程中,我们运用了 MATLAB 中的函数实现对图像的处理和分析,同时使用 GUI 界面增加了系统的易用性。值得一提的是,在实际操作中,我们应该结合实际需求对系统进行相应的改进与完善,以满足不同领域和应用场景下的需求。实验结果表明,本系统可以有效地检测出水果的成熟度,并对其进行精准的评分。因此,本文设计并实现了一款基于 MATLAB GUI 的水果成熟度分级系统。三、MATLAB 代码实现。

uote_e的博客 693

thinkphp的下载地址

https://github.com/top-think/think/

aweiweiweiei1的博客 7万+

TP钱包密码忘记了怎么办?能重置吗?(tokenPocket)

不过如果你的钱包是 TP, 还是有机会找回丢失的密码的,因为 Tp 钱包开源,对源码进行分析,可以找到密码设置和保存的位置和具体算法,然后写程序脚本通过穷举的办法来尝试碰撞正确的密码,成功率是根据你当初设置的密码长度和复杂度有关。在使用 web3 去中心化钱包的时候,密码是存在本地的,所以当忘记的时候,没有办法通过官方渠道来找回或者重置,一般官方客服都是这么回答的。8-10 位长度的数字字母组合,找回概率比较大;超过13位的基本找不回了。

weixin_t1452030的博客 3126

NLP笔记:分类问题常用metrics整理

NLP笔记:分类问题常用metrics整理 0. 简介 1. Accuracy 2. Precision, Recall & F1 score 1. TP, FP, FN, TN 2. Precision 3. Recall 4. F1 score 1. micro F1 2. macro F1 5. 代码实现样例 3. ROC & AUC 0. 简介 这里,我们来考察一下NLP分类问题中常用的metrics定义。 它们主要包括: Accuracy 准确率(Pre..

codename_cys的博客 1553

[转]iOS游戏如何防御外挂IAP破解

http://www.j1f3.com/news/game/21371.html 今年3月初写过一篇《iO平台游戏安全小议》,到现今已有7个月了。在这段时间内,iOS平台上的安全问题也产生了不小的变化。从作弊方式来说,从以前稍有门槛的手工操作(命令行操作)发展成了傻瓜式的只需要点击按钮的外挂工具的普及,使得作弊方式可以大量的泛滥。从防御方式来说,发展虽然缓慢,但也有了一定的有效对策。 游戏,无...

weixin_33800593的博客 317

IAP破解原理

今年3月初写过一篇《iO平台游戏安全小议》,到现今已有7个月了。在这段时间内,iOS平台上的安全问题也产生了不小的变化。从作弊方式来说,从以前稍有门槛的手工操作(命令行操作)发展成了傻瓜式的只需要点击按钮的 今年3月初写过一篇《iO平台游戏安全小议》,到现今已有7个月了。在这段时间内,iOS平台上的安全问题也产生了不小的变化。从作弊方式来说,从以前稍有门槛的手工操作(命令行操作)发展

jxgzxh110的专栏 1212

IAP内购破解原理

今年3月初写过一篇《iO平台游戏安全小议》,到现今已有7个月了。在这段时间内,iOS平台上的安全问题也产生了不小的变化。从作弊方式来说,从以前稍有门槛的手工操作(命令行操作)发展成了傻瓜式的只需要点击按钮的 今年3月初写过一篇《iO平台游戏安全小议》,到现今已有7个月了。在这段时间内,iOS平台上的安全问题也产生了不小的变化。从作弊方式来说,从以前稍有门槛的手工操作(命令行操作)发展

jxgzxh110的专栏 8438

iOS平台游戏安全再议之存档修改与防御

一款游戏,如果免费功能做得足够吸引,那玩家下一步就会想要尝试收费部分。这时候,单纯玩家会走上正常付费路线,而较为吝啬的玩家则会尝试搜寻该款游戏外挂,比如说xxx破解版,xxx完整版,xxx补丁,xxx存档,xxx辅助。          对于iOS游戏,玩家首先会在比较火的论坛里去搜索。我们试着用关键字“修改” 在这个论坛进行搜索,可以找到很多iOS游戏的修改攻略,说不定有一个就是你

trandy的专栏 6147

iOS平台游戏安全再议之八门神器内存修改,IAP Free游戏内购破解防御

 http://danqingdani.blog.163.com/blog/static/186094195201298103346566/ 今年3月初写过一篇《iO平台游戏安全小议》,到现今已有7个月了。在这段时间内,iOS平台上的安全问题也产生了不小的变化。从作弊方式来说,从以前稍有门槛的手工操作(命令行操作)发展成了傻瓜式的只需要点击按钮的外挂工具的普及,使得作弊方式可以大量

sharemyfree的专栏 5706

iOS外挂防御

游戏,无论是运行在哪个平台,PC机,掌机,街机,电视还是手机上?无论是单机,弱联网的,强联网的?无论是否具备客户端,网页游戏还是客户端游戏,本质上就是数据与指令。总的来说由三部分组成  1.负责逻辑处理即指令部分  在windows上它有exe,dll后缀,好识别(还有swf,air等后缀),基本是PE32 executable格式。  在linux/unix系统上为ELF executable,s

puremilk684的博客 1198

iOS比较常用的第三方及实例(不断更新中)

  把平时看到或项目用到的一些插件进行整理,文章后面分享一些不错的实例,若你有其它的插件欢迎分享,不断的进行更新;   一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://github.com/jdg/MBProgressHUD 地址:https:/...

weixin_34380948的博客 7396

机器学习评价指标合辑(TP/FP/FN/TN/Precision/Recall/F1score/P-R曲线/ROC曲线/AUC)

我们训练模型时需要用到各种评价指标,网上很多人的总结要么太凌乱,甚至还有错误,总结一下各种常用的评价指标,以备使用时查阅,如有错误欢迎指出。 1.分类准确率 分类正确的样本占总样本个数的比例。 2.TP/FP/FN/TN 1)True positive(TP): 真正例,将正类正确预测为正类数; 2)False positive(FP): 假正例,将负类错误预测为正类数; 3)Fa...

公众号/知乎: AI算法札记,欢迎关注交流 1万+

TL-WR842无线桥接(WDS)方法及案例

家里和办公室旧的TL-WR842的无线路由器不要再闲置了,利用它可以做成高性能的无线中继设备,只要开启它的WDS,就可以让把主路由的信号进行扩展。无线桥接(WDS)可以将多台无线路由器通过无线方式互联,从而将无线信号扩展放大。无线终端在移动过程中可以自动切换较好的信号,实现无线漫游。

小刀的博客-InfoMax 7255

计算机体系结构

第1章计算机体系结构的基本概念 1.存储程序计算机 最早的冯诺依曼结构的计算机是以(运算器)为中心的,现代计算机以存储器为中心。 2.程序员所看到的机器属性 这些属性是计算机系统中由硬件或固件完成的功能 3.计算机体系结构包括计算机系统设计的三个方面: 计算机指令系统、计算机组成和计算机硬件 从计算机系统结构来看,机器语言程序员看到的机器属性是(A) A.编程要用到的硬件组织 B.计算机硬件的全部组成 C.计算机软件所要完成的功能 D.计算机各部件的硬件实现 计算机系统结构不包括( C ) A.

qq_34178628的博客 6429

零时 || 警惕恶意聊天软件!聊天记录被劫持损失数千万资产追踪分析

本次案例是由于受害者下载恶意的WhatsApp聊天软件,导致转账目标地址被篡改,损失大量资金,类似的案例还有很多,例如通过恶意假交易平台、假钱包、假Telegram等。

m0_37598434的博客 2069

在TP 钱包中DApp 绑定团队邀请关系不生效,技术如何解决?

分析发现,造成这个问题的原因是TP钱包会自动修改你的分享链接,添加 UTM 来源参数。带utm参数的链接:https://xxx.com/?属性,这个属性是一个URLSearchParams对象,用于获取URL中的查询参数。这个方法可以把一个URL字符串解析成一个URL对象,我们可以从这个对象中获取到URL的各个部分。不带utm参数的链接:https://xxx.com/#/?方法重新构建URL对象,并返回这个新的URL字符串。中的utm参数去掉,生成新的URL字符串。是参数名,表示要删除的参数名。

weixin_58714964的博客 3786

点阵字库(字模)生成器 4.0

这个点阵字库(字模)生成器 4.0是注册破解版, 网上很多都是骗人的, 找了很久才找到这个, 工具很方便, 很容易生成相应的字模字库, 经测试可用

上一篇: 自定义UITableViewCell上的delete按钮
下一篇: iOS平台游戏安全再议之存档修改与防御
trandy
博客等级 码龄17年 79粉丝 20原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值