软件安全防破解之字符串加密

原文:http://bbs.84zcb.com/showtopic-3430.aspx

大家知道提示框和字符串是新手破解的关系,如果我们能将敏感的字符串进行加密传输,那么就可以杜绝90%以上的破解新手。下面以注册宝的安全码和软件编号几种不同的加密方法对比防山寨效果(易语言为例,其他语言类似)

明文未加密写法

.版本 2

‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 【重要】新手一般只需要修改您自己的"安全码"和"软件编号"即可使用,软件编号和安全码从开发者后台获得
安全码 = “DF103B82-9791-4290-9AAB-FB857FD6A6BE” ‘ 设置软件安全码
软件编号 = “Z10016200” ‘ 设置软件编号
软件版本 = 1 ‘ 设置软件版本号(整数型)
‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 注册宝.数值方法 (“EnableLog”, 1) ‘ 开启注册宝调用日志,方便BUG问题排查 1表示开启 0表示关闭 默认没有调用是0
版本号 = 注册宝.文本方法 (“Ver”, 1) ‘ 1为获取dll内部版本(10006)
属性版本 = 注册宝.文本方法 (“Ver”, 2) ‘ 2为获取dll的属性版本号(1.0.0.xxxxx)
.如果 (注册宝.数值方法 (“AppInitialize”, 安全码, 软件编号, 软件版本) = 1) ‘ 软件初始化
‘ 初始化成功
信息框 (“初始化完成,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”)
‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
.否则
‘ 初始化失败
信息框 (“初始化失败,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”) ‘ 出现这个提示请检查初始化的各个参数及插件版本是否正确
结束 ()

OD载入后查找字符串

结论:以明文直接写入的方法是最不安全的,载入OD可你的安全码和软件编号一目了然,任何新手都可以轻而易举的山寨掉你的软件。所以这种方法的防破解效果几乎为零

字节集方式加密

.版本 2

‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 【重要】新手一般只需要修改您自己的"安全码"和"软件编号"即可使用,软件编号和安全码从开发者后台获得
安全码 = 到文本 ({ 68, 70, 49, 48, 51, 66, 56, 50, 45, 57, 55, 57, 49, 45, 52, 50, 57, 48, 45, 57, 65, 65, 66, 45, 70, 66, 56, 53, 55, 70, 68, 54, 65, 54, 66, 69 })  ‘ 设置软件安全码
软件编号 = 到文本 ({ 90, 49, 48, 48, 49, 54, 50, 48, 48 })  ‘ 设置软件编号
软件版本 = 1  ‘ 设置软件版本号(整数型)
‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 注册宝.数值方法 (“EnableLog”, 1)  ‘ 开启注册宝调用日志,方便BUG问题排查 1表示开启  0表示关闭  默认没有调用是0
版本号 = 注册宝.文本方法 (“Ver”, 1)  ‘ 1为获取dll内部版本(10006)
属性版本 = 注册宝.文本方法 (“Ver”, 2)  ‘ 2为获取dll的属性版本号(1.0.0.xxxxx)
.如果 (注册宝.数值方法 (“AppInitialize”, 安全码, 软件编号, 软件版本) = 1)  ‘ 软件初始化
    ‘ 初始化成功
    信息框 (“初始化完成,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”)
    ‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
.否则
    ‘ 初始化失败
    信息框 (“初始化失败,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”)  ‘ 出现这个提示请检查初始化的各个参数及插件版本是否正确
    结束 ()

OD查找字符串

数据窗口查找字符串

结论:相对于上一种有了改进使用字节集方法加密的方法虽然在查找字符串时无法看到安全码和软件编号,但是还是能够在数据窗口中轻松找到这些字符串。所以这种方法也是掩耳盗铃,也不能有效防止被山寨

字符串打乱加密

.版本 2

‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 【重要】新手一般只需要修改您自己的"安全码"和"软件编号"即可使用,软件编号和安全码从开发者后台获得
安全码 = 字符 (96 - 28) + 字符 (70) + 到文本 (到整数 (“1”)) + 到文本 (到整数 (“0”)) + 字符 (取代码 (“3”, )) + 字符 (66) + 到文本 (到整数 (“8”)) + 到文本 (77 × 0 + 2) + 字符 (右移 (90, 1)) + 字符 (57) + 到文本 (56 × 0 + 7) + 到文本 (到整数 (“9”)) + 到文本 (到整数 (“1”)) + 字符 (45) + 到文本 (97 × 0 + 4) + 到文本 (到整数 (取反 (假)) × 68 × 0 + 2) + 到文本 (40 × 0 + 9) + 到文本 (10 × 0 + 0) + 字符 (取代码 (“-”, )) + 到文本 (右移 (18, 1)) + 字符 (取代码 (“A”, )) + 字符 (22 + 43) + 字符 (63 + 3) + 字符 (5 + 40) + 字符 (取代码 (“F”, )) + 字符 (右移 (264, 2)) + 到文本 (到整数 (“8”)) + 到文本 (右移 (10, 1)) + 到文本 (右移 (3584, 9)) + 字符 (取代码 (“F”, )) + 字符 (取代码 (“D”, )) + 到文本 (87 - 81) + 字符 (右移 (8320, 7)) + 到文本 (右移 (384, 6)) + 字符 (70 - 4) + 字符 (右移 (552, 3)) ‘ 搅乱前字符串[DF103B82-9791-4290-9AAB-FB857FD6A6BE]
软件编号 = 字符 (90) + 到文本 (到整数 (“1”)) + 到文本 (到整数 (取反 (假)) × 98 × 0 + 0) + 到文本 (右移 (0, 8)) + 到文本 (到整数 (取反 (假)) × 53 - 52) + 字符 (54) + 到文本 (到整数 (“2”)) + 到文本 (到整数 (取反 (假)) × 10 - 10) + 到文本 (右移 (0, 6)) ‘ 搅乱前字符串[Z10016200]
软件版本 = 1 ‘ 设置软件版本号(整数型)
‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 注册宝.数值方法 (“EnableLog”, 1) ‘ 开启注册宝调用日志,方便BUG问题排查 1表示开启 0表示关闭 默认没有调用是0
版本号 = 注册宝.文本方法 (“Ver”, 1) ‘ 1为获取dll内部版本(10006)
属性版本 = 注册宝.文本方法 (“Ver”, 2) ‘ 2为获取dll的属性版本号(1.0.0.xxxxx)
.如果 (注册宝.数值方法 (“AppInitialize”, 安全码, 软件编号, 软件版本) = 1) ‘ 软件初始化
‘ 初始化成功
信息框 (“初始化完成,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”)
‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
.否则
‘ 初始化失败
信息框 (“初始化失败,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”) ‘ 出现这个提示请检查初始化的各个参数及插件版本是否正确
结束 ()

OD载入查找字符串

数据窗口查找字符串

结论:这种方法对每一个字符进行随机的字符、取反、算术、位运算、取代码、到整数等计算,让你的字符串无人能够再辨别出来(使用工具"易语言搅乱器")。至少不至于让破解新手通过查找字符串就能山寨你的软件

加密算法加密

.版本 2

‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 【重要】新手一般只需要修改您自己的"安全码"和"软件编号"即可使用,软件编号和安全码从开发者后台获得
安全码 = 建飞超级算法_解密 (“E7E5929390E19B918E9A949A928E97919A938E9AE2E2E18EE5E19B9694E5E795E295E1E6c6ab47b10”, “zhucebao”)
软件编号 = 建飞超级算法_解密 (“F99293939295919393c6ab47b10”, “zhucebao”)
软件版本 = 1 ‘ 设置软件版本号(整数型)
‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 注册宝.数值方法 (“EnableLog”, 1) ‘ 开启注册宝调用日志,方便BUG问题排查 1表示开启 0表示关闭 默认没有调用是0
版本号 = 注册宝.文本方法 (“Ver”, 1) ‘ 1为获取dll内部版本(10006)
属性版本 = 注册宝.文本方法 (“Ver”, 2) ‘ 2为获取dll的属性版本号(1.0.0.xxxxx)
.如果 (注册宝.数值方法 (“AppInitialize”, 安全码, 软件编号, 软件版本) = 1) ‘ 软件初始化
‘ 初始化成功
信息框 (“初始化完成,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”)
‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
.否则
‘ 初始化失败
信息框 (“初始化失败,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”) ‘ 出现这个提示请检查初始化的各个参数及插件版本是否正确
结束 ()

OD载入查找字符串

结论:这种方法对原来的安全码和软件编号通过一个加密密钥(图中以采用建飞加密解密模块算法用‘zhucebao‘作为密钥进行加密)进行加密,OD中看不到原来的安全码和软件编号,但可以看到加密后的字符串和加密密钥,如果用户熟悉你使用的加密也可以进行山寨替换

字符串打乱加算法加密

.版本 2

‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 【重要】新手一般只需要修改您自己的"安全码"和"软件编号"即可使用,软件编号和安全码从开发者后台获得
安全码 = 建飞超级算法_解密 (字符 (右移 (17664, 8)) + 到文本 (44 - 37) + 字符 (右移 (276, 2)) + 字符 (取代码 (“5”, )) + 到文本 (到整数 (“9”)) + 字符 (取代码 (“2”, )) + 到文本 (到整数 (取反 (假)) × 32 × 0 + 9) + 到文本 (到整数 (取反 (假)) × 50 - 47) + 到文本 (87 - 78) + 到文本 (0 ÷ 90) + 字符 (取代码 (“E”, )) + 字符 (取代码 (“1”, )) + 到文本 (到整数 (取反 (假)) × 26 - 17) + 字符 (66) + 到文本 (67 - 58) + 到文本 (右移 (64, 6)) + 字符 (取代码 (“8”, )) + 字符 (右移 (2208, 5)) + 到文本 (79 - 70) + 字符 (右移 (520, 3)) + 字符 (取代码 (“9”, )) + 到文本 (到整数 (取反 (假)) × 80 - 76) + 到文本 (到整数 (“9”)) + 字符 (取代码 (“A”, )) + 字符 (57) + 字符 (50) + 到文本 (10 - 2) + 字符 (取代码 (“E”, )) + 字符 (取代码 (“9”, )) + 到文本 (到整数 (“7”)) + 到文本 (右移 (4608, 9)) + 到文本 (右移 (4, 2)) + 到文本 (右移 (144, 4)) + 字符 (65) + 字符 (57) + 到文本 (85 - 82) + 字符 (56) + 字符 (取代码 (“E”, )) + 到文本 (27 - 18) + 字符 (65) + 字符 (69) + 字符 (取代码 (“2”, )) + 字符 (右移 (17664, 8)) + 到文本 (10 - 8) + 字符 (69) + 字符 (取代码 (“1”, )) + 到文本 (到整数 (取反 (假)) × 51 - 43) + 字符 (右移 (1104, 4)) + 字符 (69) + 字符 (取代码 (“5”, )) + 字符 (右移 (35328, 9)) + 到文本 (到整数 (取反 (假)) × 69 - 68) + 到文本 (73 - 64) + 字符 (66) + 到文本 (到整数 (“9”)) + 字符 (54) + 到文本 (到整数 (取反 (假)) × 18 - 9) + 字符 (52) + 字符 (右移 (1104, 4)) + 到文本 (到整数 (取反 (假)) × 30 - 25) + 字符 (取代码 (“E”, )) + 到文本 (17 - 10) + 到文本 (5 + 4) + 到文本 (右移 (20, 2)) + 字符 (右移 (552, 3)) + 到文本 (到整数 (“2”)) + 到文本 (到整数 (取反 (假)) × 83 - 74) + 到文本 (到整数 (取反 (假)) × 54 - 49) + 字符 (取代码 (“E”, )) + 到文本 (25 - 24) + 字符 (右移 (1104, 4)) + 到文本 (到整数 (取反 (假)) × 66 - 60) + 字符 (99) + 到文本 (右移 (192, 5)) + 字符 (右移 (24832, 8)) + 字符 (取代码 (“b”, )) + 到文本 (87 - 83) + 到文本 (到整数 (取反 (假)) × 96 - 89) + 字符 (右移 (25088, 8)) + 到文本 (右移 (256, 8)) + 到文本 (0 ÷ 63), 字符 (取代码 (“z”, )) + 字符 (43 + 61) + 字符 (右移 (468, 2)) + 字符 (99) + 字符 (取代码 (“e”, )) + 字符 (取代码 (“b”, )) + 字符 (97) + 字符 (35 + 76)) ‘ 安全码=DF103B82-9791-4290-9AAB-FB857FD6A6BE
软件编号 = 建飞超级算法_解密 (字符 (右移 (1120, 4)) + 字符 (取代码 (“9”, )) + 到文本 (到整数 (“9”)) + 到文本 (到整数 (取反 (假)) × 71 - 69) + 字符 (57) + 字符 (取代码 (“3”, )) + 字符 (取代码 (“9”, )) + 字符 (取代码 (“3”, )) + 字符 (取代码 (“9”, )) + 到文本 (2 - 0) + 到文本 (到整数 (“9”)) + 到文本 (右移 (160, 5)) + 到文本 (59 - 50) + 到文本 (到整数 (“1”)) + 到文本 (右移 (36, 2)) + 到文本 (右移 (192, 6)) + 到文本 (到整数 (“9”)) + 到文本 (到整数 (取反 (假)) × 60 ÷ 20) + 字符 (13 + 86) + 到文本 (50 - 44) + 字符 (右移 (194, 1)) + 字符 (右移 (50176, 9)) + 到文本 (到整数 (取反 (假)) × 108 ÷ 27) + 到文本 (到整数 (取反 (假)) × 679 ÷ 97) + 字符 (右移 (6272, 6)) + 到文本 (到整数 (取反 (假)) × 39 ÷ 39) + 字符 (取代码 (“0”, )), 字符 (70 + 52) + 字符 (右移 (832, 3)) + 字符 (取代码 (“u”, )) + 字符 (右移 (25344, 8)) + 字符 (取代码 (“e”, )) + 字符 (98) + 字符 (97) + 字符 (取代码 (“o”, ))) ‘ 软件编号=Z10016200
软件版本 = 1 ‘ 设置软件版本号(整数型)
‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
‘ 注册宝.数值方法 (“EnableLog”, 1) ‘ 开启注册宝调用日志,方便BUG问题排查 1表示开启 0表示关闭 默认没有调用是0
版本号 = 注册宝.文本方法 (“Ver”, 1) ‘ 1为获取dll内部版本(10006)
属性版本 = 注册宝.文本方法 (“Ver”, 2) ‘ 2为获取dll的属性版本号(1.0.0.xxxxx)
.如果 (注册宝.数值方法 (“AppInitialize”, 安全码, 软件编号, 软件版本) = 1) ‘ 软件初始化
‘ 初始化成功
信息框 (“初始化完成,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”)
‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
.否则
‘ 初始化失败
信息框 (“初始化失败,当前插件版本号:” + 版本号 + “,属性版本:” + 属性版本, 0, “注册宝”) ‘ 出现这个提示请检查初始化的各个参数及插件版本是否正确
结束 ()

OD载入查找字符串

结论:经过双重保护,可以较有校的保护安全码和软件编号不被恶意替换,即找不到加原来的明文安全码软件编号也找不到加密后的注册码软件编号和加密密钥

工具下载:

建飞加密解密模块Bera1.1改良版:http://pan.baidu.com/s/1eQs2ZSY

易语言字符串搅乱器下载(防破解专用):http://pan.baidu.com/s/1kTKJfs7

防破解永远没有那么简单,没有什么软件是不能破解(所以一些问这个网络验证安全不安全会不会被破解真的很蠢,主要的防破解工作是在自己身上而不是在网络验证上),我们只能想办法提高破解门槛,消耗破解者的时间和精力。

随时关注注册宝网络验证:http://www.84zcb.com/,更多教程待续

时间: 2024-07-31 06:43:31

软件安全防破解之字符串加密的相关文章

App山寨疯狂 爱加密Apk加密平台防破解

App山寨疯狂 爱加密Apk加密平台防破解,Android系统由于其开源性,眼下已占领全球智能机近80%的市场,远超微软的WP系统和苹果的IOS系统.然而也正是由于开源性,Android盗版App在国内横行泛滥,盗版App通过广告骚扰.窃取账号.盗取隐私.远程控制.恶意扣费.购物欺诈等影响用户的体验,侵害用户利益.文章出处:www.ijiami.cn App山寨疯狂 爱加密Apk加密平台防破解,面对严重的App山寨横行的现象,国内第三方针对Android应用加固的平台爱加密,致力于保护App安全

软件加密的一些误区及防破解

柳永法(yongfa365)'Blog先总结一下: 不要太相信注册表所以把注册码之类的敏感信息放在里边 不要调用系统时间看是不是试用期已过,可以调用一些系统文件的创建时间 不要将敏感信息以明文的形式写在程序中,防止直接十六进制查看 加密或验证部分与软件主体部分耦合度要高(虽然不便维护) 不要对注册码进行明文比较,防内存补丁,至少md5后比较 不要将出错提示信息紧跟在加密判断之后,防直接查找字符串,快速定位破解 检查自己的进程的父进程是否为Explorer.exe,不是就Kill掉,甚至Kill自

Unity3d 调用 C++ 函数 实现加密防破解 (Android向)

因为Unity 采用C# 作为主要语言,代码编译之后作为DLL存在与执行文件中,这就给我们带来很大的一个问题,反编译非常容易. 如何反编译Unity游戏的代码: Unity打包生成的安装包,我们随便下载一个游戏,解压APK,来到 assets\bin\Data\Managed 这个目录. Assembly-CSharp.dll Assembly-CSharp-firstpass.dll 你在游戏中编写的代码就存放在这两个dll中. 把dll拖放到MonoDevelop中,稍等片刻,就能看到dll

分享 如何做到基于NDK的Android应用防破解!

 Android程序防破解是发布app时一个很需要考虑的问题,通常的做法是对代码加入混淆干扰以增加破解难度.但即便如此,混淆操作之后的java代码仍然可以被通过各种方法进行破解.在基于NDK的Android中含有相应的main.cpp来作为应用程序的入口,因而在这里进行一些防破解较验,相应的破解难度就会增大不少(相对于java代码). 在Android整个导出过程中,生成.dex阶段是整个打包发布操作的基础,包括相应的java源代码.外部库文件均会被编译链接到.dex文件中,而其中关于代码的任何

基于NDK的Android防破解

Android程序防破解是发布app时一个很需要考虑的问题,通常的做法是对代码加入混淆干扰以增加破解难度.但即便如此,混淆操作之后的java代码仍然可以被通过各种方法进行破解.在基于NDK的Android中含有相应的main.cpp来作为应用程序的入口,因而在这里进行一些防破解较验,相应的破解难度就会增大不少(相对于java代码). 在Android整个导出过程中,生成.dex阶段是整个打包发布操作的基础,包括相应的java源代码.外部库文件均会被编译链接到.dex文件中,而其中关于代码的任何改

单机 & 弱联网手游 防破解、金币修改 简单措施

手游常用破解方法 对于一个弱联网或者单机游戏,可以从以下方面去破解: 1.找得到存档文件的,直接破解修改存档文件. 2.找不到存档文件,就在游戏运行时借助一些软件来修改数值,比如用各种修改器手游助手来修改金币. 3.找不到存档文件.数值还修改不了,就直接反编译,Java就看Java.C#就看IL.C++就看汇编. 文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn 手游防破解对策 好了,防破解我们也从以上方面来做 (或者还有其它

【转】两步实现超实用的XML存档 易使用,跨平台,防作弊(内容加密 + 防拷贝)

转载自风宇冲Unity3D教程学院 两步实现超实用的XML存档 本套存档的优点:易使用,跨平台,防作弊(内容加密 + 防拷贝) 脚本下载地址 使用方法非常简单:把GameDataManager和XmlSaver两个脚本添加至工程后(1)新建一个GameObject,起名GameDataManager并将GameDataManager脚本拖到上面.(2)在GameDataManager里的GameData类中添加需要储存的数据OK,跨平台防破解防拷贝的存档就搞定了!之后每次存档调用GameData

三国kill字符串加密算法分析

[文章标题]:三国kill字符串加密算法 [文章作者]: Ericky [作者博客]: http://blog.csdn.net/hk9259 [下载地址]: 百度下载 [保护方式]: 字符串加密 [作者声明]: 本人水平有限,若有不足错误之处请各位大侠指正 0x1 前言 据说这款游戏的老版本是可以直接修改其中相应的字符串来进行狸猫换太子,从而绕过检验并且达到内购破解的效果,如今时隔一年,该游戏为了防止被篡改或者其他,加强了对自身的加密,尤其把一些关键字符串所保护,强度是否值得起时间的考验,我们

破解JS脚本加密

有时候一些html内容被加密了,我们看不到这些内容:) 下面选取了2种破解JS脚本加密的方式,大家看看 对于HTML加密或限制来说参考下面的方法www.82676666.com zzzevazzz 写的破大部分加密,显源码的东东,在地址栏输入: javascript:s=document.documentElement.outerHTML;document.write('');document.body.innerText=s; 对于JS加密来说参考下面的方法 最近很多人在问加密代码的问题.其实