吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8287|回复: 47
收起左侧

[Android CrackMe] 原创APK壳,隐藏的dex和so【悬赏已结束】

[复制链接]
wyatton 发表于 2020-6-19 10:59
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 wyatton 于 2020-7-7 15:03 编辑

悬赏结束了,APK尚未被破解。————2020.6.27

如果有人想试试这个加固来保护你的APK,可以私信我(免费)【提供APK即可】

不提供加固工具哦,有需要的直接留言或私信我APK下载地址。
如果是Java代码加固,写明需要加固的包名或类名。
如果是so加固,写明需要加固的so名称。目前版本只支持(所有)函数加固,不支持其他自定义的导出符号。

公布一下算法吧,如果有兴趣继续研究的,可以作为参考(有爆破点的,想一想你就会发现):
最后,发这个帖的本意还是在于脱壳

[Java] 纯文本查看 复制代码
//onCrackmeClicked中的Java源码生成密钥的算法如下:
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
String s = "检测到你改签名了,你得把这个过了,不然就不让你继续。";
byte[] sigHash = new byte[] {(byte)0x6d,(byte)0xf2,(byte)0x47,(byte)0xa8,(byte)0xe0,(byte)0xc8,(byte)0x3a,(byte)0xb3,(byte)0xde,(byte)0x58,(byte)0x85,(byte)0x1e,(byte)0x17,(byte)0xc3,(byte)0xa9,(byte)0x50,(byte)0xd6,(byte)0x97,(byte)0x26,(byte)0x1d}; //这是APK签名的SHA1
byte[] seeda = ("这是计算密钥用的seed" + s + "随便加个salt香不香").getBytes("UTF-8");
Random rnd = new Random(seeda.length + sigHash.length);
for (int i = 0; i < 100; i ++) {
    int x = rnd.nextInt(seeda.length);
    int y = rnd.nextInt(seeda.length);
    byte b = seeda[x];
    seeda[x] = seeda[y];
    seeda[y] = (byte)(b ^ sigHash[i % sigHash.length]);
}
sha1 = MessageDigest.getInstance("SHA1");
byte[] b = sha1.digest(seeda);
byte[] buf = new byte[32];
for (int i = 0; i < buf.length; i ++) {
    buf[i] = (byte)(b[i % b.length] ^ sigHash[i % sigHash.length] ^ rnd.nextInt());
}
//将buf转成16进制的小写字符串就是密钥了。

====================================================

本人研究了一个APK加固,想找人研究一下强度,做了一个crackme,如果你能破解掉,会显示一个红包口令,如果能告诉我一些你的思路,那就非常感谢了。

如果红包24小时未被领取会失效,我会再次续上(最多续7天)。
如果红包被人领了,我会编辑帖子说明,并不再续红包。
附件内有APK,或者某盘下载:
链接: https://pan.baidu.com/s/1O6u4shUydA-xKu6_Yv5gIw 提取码: vdc4

=== 2020.6.24更新 ===
进行到第5天,我觉得红包什么的已经显得没那么重要了。
不如我们把重心放到壳上面?
本人目标是做一个无法被脱壳的终极壳,个人认为dex已经实现无法脱壳(原Java/smali代码已经不存在了),so还有几个点还需要再加强一下。
坐等大神出现。

=== 2020.6.23更新 ===
帖子浏览量不再上升的话,后面就不再多公布信息了,有兴趣的应该都下载了,没兴趣的看最后结果就行了。最后一天结束后可能会直接公布密钥算法。
其实密钥算法不复杂,因为这个crackme主要是为了看一下壳的强度,不过大家的兴趣貌似都在红包口令上。/手动笑哭


=== 2020.6.22更新 ===
原红包口令已失效,由于支付宝限制,口令不能重复,现口令变更为:APK中显示的口令后面加个1
这里分享一点个人对加密数据的一点心得:
由于现在各种hook框架泛滥,所以加密数据时要注意尽量避开这些雷区,否则无论你的算法写得多复杂,都有可能一运行就被人知道了密钥,甚至都不需要破解分析,比如:
Java的重灾区:String类,MessageDigest类,Cipher类(所有内置的加密算法),等等,这些常用类很可能被hook,如果你用这些类来处理加密数据,有可能直接被拿原文。即使你使用了各种方法来反hook,别人也可以直接修改系统达到打印出原文的效果。
例如回复帖中就有人很快就分析出了一些数据,个人猜测很可能是直接就被打印出来了,并不需要逆向算法。(String类,MessageDigest类,Random类,还有Android的一些类
所以Java层的加密数据,尽量要使用原生类型(int,byte....这些)来进行计算,然后尽量自己写算法,没错,就算是 b=b+1 都比 b=((Cipher)aes).doFinal(b) 来得更安全。
C代码的重灾区:各种字符串操作的函数很容易被hook。相对来说,如果能把加密数据的算法写进native层那安全性会上升一个档次。但是native层的逆向现在也不稀奇了,即使有ollvm高强度混淆,也可能会被轻易破解。
以上是一些个人心得,供仅参考。


=== 2020.6.21更新 ===
原红包口令已失效,由于支付宝限制,口令不能重复,现口令为APK中显示的口令
再透露一点信息,so的混淆主要分两块:一是ollvm的混淆,二是我自己写的一点简易混淆,双重叠加,所以如果直接进行静态分析起来可能会比较累。
另外,直接打开so静态分析的人可能看到了,data段很大,分析过其他加固的人可能猜到了,这里很像是放了被加固的代码


=== 2020.6.20更新 ===
原红包口令已失效,由于支付宝限制,口令不能重复,现口令变更为:APK中显示的口令后面加个1
透露一点这个加固壳的信息:
这个加固程序是原创开发的,没有采用任何第三方的开源库,所以市面上的一些套路可以在这里不是很适用。
文件名有包含vmp,但实际上目前并没有加上vmp技术。这么做是因为两点:一是打一下心理战,二是后面有计划增加vmp
这个壳分两部分:dex壳和so壳。dex壳由于直接将dex转成了native代码,所以原始的dex是无法复原的(就是dex不用脱,看到的代码就是最终代码了)。so壳暂时不讨论更多,如果静态打开so的话,首先看到的就是混淆后的壳代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 3吾爱币 +9 热心值 +2 收起 理由
sun孙靖飞 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
子晗。 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
CrazyNut + 6 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

赤座灯里 发表于 2020-6-19 16:15
本帖最后由 赤座灯里 于 2020-6-19 19:14 编辑

单击按钮后做了下面几件事:
Log.d显示进入,取自身签名的SHA1同6D F2 47 A8 E0 C8 3A B3 DE 58 85 1E 17 C3 A9 50 D6 97 26 1D做比较;
相等后将"这是计算密钥用的seed"与“检测到你改签名了,你得把这个过了,不然就不让你继续。随便加个salt香不香”连接后getBytes作为seed,接着调用new Random(151)后调用200次Random.nextInt(131),得到[130,86,73,2,29,28,73,50,49,64,2,84,27,97,51,113,19,83,129,107,85,58,22,12,72,33,0,23,92,83,67,89,98,42,20,129,38,85,44,60,7,53,48,19,122,36,62,113,106,45,121,78,30,52,24,102,84,102,114,53,40,15,60,76,56,95,93,2,20,115,122,74,123,35,128,43,127,61,104,36,62,30,71,75,124,66,89,74,12,35,104,5,3,126,18,0,84,55,73,29,39,40,114,0,90,110,22,2,33,36,123,127,40,83,41,65,55,92,7,89,61,81,40,4,74,101,93,66,53,53,112,87,21,29,47,7,4,70,71,12,69,69,58,46,122,86,86,56,17,86,22,43,73,69,22,1,50,130,91,114,47,9,23,72,3,88,60,95,103,65,22,33,80,59,95,128,32,122,37,22,129,120,68,32,113,33,114,41,37,86,25,42,113,18,67,34,101,123,70,109];
然后将[-35,-23,38,-28,-24,102,-24,35,-95,-115,-82,-105,-34,-81,-122,99,-110,-67,-95,127,-28,-30,-68,-117,-83,109,101,-25,-28,-35,88,-26,-90,53,47,100,57,12,-27,-23,-104,54,53,58,-105,9,126,-25,-124,-24,-80,-118,-70,24,-116,74,110,-96,-27,-126,-86,-115,-17,-118,4,3,30,-27,-12,48,-28,112,-39,47,-69,77,-82,-68,-68,-28,-66,-58,-25,-13,-28,-101,52,45,-1,-95,-66,84,56,-34,-28,-25,-96,94,-71,-89,-25,-26,0,3,-81,-126,-66,-2,-113,54,-102,-65,-79,-124,-65,51,-72,-86,115,97,-70,-116,107,125,-103,-28,-36,-40,-12,108,23]SHA1后得到[-72,-14,-64,27,-14,-52,-103,-19,95,-111,0,18,-58,84,-53,47,58,-124,105,98];
再调用32次Random.nextInt()得到[654260868,752202743,1478391953,-1586311135,-850411868,-795878730,144626626,1978867538,-1005435504,1809817001,602787105,95462921,-1482050371,-1952043110,-1475246216,-196176518,1900131464,-773566430,-1854065732,100205251,1887858059,-1098948496,-2074935165,-997584045,-1500887247,-725843895,-1785656141,1605045129,-1640989812,-1595803825,-1207021188,-1817893989,1284281445,-1313902971,1980217223,259016377,840181140,90291730,1867303791,1254891633,360798354,704598852,1092535664,-753787819,1209670988,553022168,-1362372515,2134195162,-1980165063,921099127,-197395497,-1823545726,-919435858,1980009604,1833149883,-530180035,427883120,739882260,820258524,1074827788,952781195,2030702397,-571957519,862187751,-1467535519,-803591277,-909526063]。

剩下的应该就是一些变换和比较了,交给别人玩吧
并不算真正的vmp,感觉就是Dex2C后加了ollvm
 楼主| wyatton 发表于 2020-6-19 19:55
佚名RJ 发表于 2020-6-19 19:37
万恶的度盘,虽然500元看到这度盘链接也让我提不起兴趣

让大佬失望了,深感愧疚,立马上了一个zip到附件中。
灵剑丹心 发表于 2020-6-19 17:28
本帖最后由 灵剑丹心 于 2020-6-19 17:52 编辑

装逼猿:500你是瞧谁不起呢。不好意思走错片场
by忆殇 发表于 2020-6-20 03:33
佚名RJ 发表于 2020-6-19 19:59
好说好说,马上搞定,钱马上就是我的了!

7个半小时过去了,怎么样了
涛之雨 发表于 2020-6-19 14:00
vmp
不会搞
无颜君〃 发表于 2020-6-19 12:49
500.。。太牛逼了
Wanderer-Q 发表于 2020-6-19 13:19
有大佬破解了吗???
 楼主| wyatton 发表于 2020-6-19 13:57
Wanderer-Q 发表于 2020-6-19 13:19
有大佬破解了吗???

目前还没有,红包还显示“领取中”
windy_ll 发表于 2020-6-19 14:04
so层混淆到我看到就溜了
pumishuo 发表于 2020-6-19 14:16
非常的复杂, 研究中
 楼主| wyatton 发表于 2020-6-19 14:18
pumishuo 发表于 2020-6-19 14:16
非常的复杂, 研究中

感谢支持
菜鸟--不二 发表于 2020-6-19 14:30
老哥这壳也做得很牛逼 吧,现在都没大佬做出来
guangguang210 发表于 2020-6-19 14:57
菜鸟--不二 发表于 2020-6-19 14:30
老哥这壳也做得很牛逼 吧,现在都没大佬做出来

小白来围观,膜拜一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-27 03:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表