能力值:
( LV2,RANK:10 )
|
-
-
2 楼
mark 收藏
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
赞美小鬼的分析,先坐再看
|
能力值:
( LV9,RANK:160 )
|
-
-
4 楼
mark 鬼哥
|
能力值:
( LV13,RANK:550 )
|
-
-
5 楼
不错。。学习了.
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
mark鬼哥。向鬼哥学习!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
感觉很不靠谱,你有测试可以无限循环超过30分钟吗
|
能力值:
( LV6,RANK:90 )
|
-
-
8 楼
你看一下30分钟的上下文,了解下软件正常的执行流程,就明白了
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
按你说的,试了下,只有四分钟了-_-||
|
能力值:
( LV6,RANK:90 )
|
-
-
10 楼
(⊙o⊙)…楼上留个邮箱给我,或者私信发我一下,我发你我改完的so试试吧,我这边无限循环开着,无压力的
用IDA中操作的,修改然后查看是正常,但是IDA是没有修改so的,只是辅助分析而已,保存的是你分析当前文件的数据库。
而没有用010Editor之类16进制工具跳转到对应地址进行修改,修改后修改权限所以多次使用测试后,相当于没有替换so,30分钟的时间到期的..
有时间希望楼主一起来研究下这个注册算法,达到一劳永逸的效果最好~
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
很认真的分析文章,来支持了
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
感谢分享,只要移动so档案,就会造成程式异常。
|
能力值:
( LV6,RANK:90 )
|
-
-
13 楼
得修改相应权限的。chomd 777 libjni.so
此软件在测试的时候是有一些问题:
替换后,修改一下权限,可以使用一段时间。
一段时间后,应该是超过30分钟以后,程序好像是会还原成最初的那个so,也就是试用版的,不过试用版的我开了50分钟好像是没问题了。
希望有时间,跟楼主一起分析掉那个注册算法,直接做好注册机,达到一劳永逸的效果。
这个注册算法,在IDA动态调试时可以看到的,有密钥,输入的注册码,IMEI等相关信息,这几天正在看c++相关资料,希望楼主能早一步搞定~
今天有时间的话,我继续分析下注册算法看下,希望有兴趣的朋友一起来搞哈~
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
您注册算法的地方追错了,不是那,应该是另外一个地方,注册机应该不太容易,我全部追完了,卡在RSA 1024Bit的私钥没有(要算不容易,可以去研究看看,目前还没人破成功),没办法写注册机,大概只能强破了。
关键在License::init中
|
能力值:
( LV6,RANK:90 )
|
-
-
15 楼
init:方法是检测的时候调用的,不是注册的哦。
可以看一下那个xrefs的引用~init方法被TouchelperLicense_time和TouchelperLicense_valid这两个方法所调用,一个是检测注册的有效期时间,一个是检测是否已经注册。
在动态调试的时候,对 doRegister 下断点,然后在输入序列号之后,则会断住,帖子上我也更新了那个CM.rar的压缩包,是一些动态调试的截图。
同时,我已经给您发邮件了,是我对这个软件使用cydia那个框架写的个java注入的代码和分析,请批评指正~~
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
我想你还是搞错了,你追到最后的东西是要传到对方伺服器的东西。他会回传一个key.dat档案到你手机中的/data/data/net.aisence.Touchelper/license/key.dat,这个跟注册文件激活是一样的档案,他开启程式后会来检测这个档案,"License::init:方法是检测的时候调用的,不是注册的哦",这完全是不对的,他是用来检测档案是否正确,并会用License::decrypt->RSA_public_decrypt来让RSA用公钥解码,成为注册档案,在用License::valid来验证是否注册完成。
下面是公开金钥:(E, N)
#define MODULUS "00e33741e366d4f209e5e24f702a0fa644e51a99ee6d4b156c801e1789f70aed0c9b1f40dd232300897a44bd28b60560ff3e84d1fa493aa00fdcdcc69be7753e8975765a9a6472eade77373677769fb95e7d7f89208d1af67a210bd75ce2487564c53779602b38f73d272f5763985866744edb644dcde4d5ec0223ec6bd0c0f5df"
#define PUBLIC_EXPONENT 65537
只是很奇怪的,我用IDA去追输入128byte的资料总是返回-1,我用C++写得却OK,最后就是要推算私钥运气好的话几个月,运气不好的或几年。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
怎么不顺便把文件上传上来
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
没文件,自己创一个吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
只该valid是无效的,假破解,还有个暗桩,不知道lz什么版本,我说的最新版
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
当然有暗桩,把libtouchelper.so Dump出来就可以找到了,只要Key.dat正确就可以绕过。
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
我是用另一种方法再加上hook so绕过验证的,只是在提醒lz这样还是不完全
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
错了,我已经Dump出来了,档案跟3.3.0差不了多少,暗桩位置也一样,改完在加密回去,并更改libinit.so的参数(或者把RSA的KEY更改,直接写一个Key.dat也可以),几乎就可以了,新出来的3.8.4还没改就初始化错误,有人跟我一样吗?
|
能力值:
( LV6,RANK:90 )
|
-
-
23 楼
@peecehood @ztxbeyond ,两位朋友方便的话,可以简单写下文字过程。最近一直在忙着写代码,没怎么继续深入研究此软件了,两位的方法看着都可行。修改密钥,修改验证方法,都可以保证软件正常使用。
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
本着志在研究,不为破解为目的(其实购买也很便宜,能支持就支持吧,不过我这边不太好买),大概说一下我是怎样破的好了(不详细说明只说过程)。
首先我已经把所有暗桩拔了,测试好几个小时OK,总共修改档案有三个libinit.so、libjni.so、libtouchelper.so,安装之后他会把所有so放入data,第一次执行,会把libinit.so改名为.tedaemon放入bin中(libeditor.so也会,但不是重点),然后执行脚本利用这个so执行档来做libtouchelper.so解码并动态连结,之后就开始执行脚本。
三个目的:
一、libtouchelper.so解码之后修改两个暗桩,一个是libjni.so与libinit.so的MD5比对利用(比对的延迟时间是用乱数,因此破解不完全就会不定时跳出),另一个是三十分钟。
二、libinit.so只要apk签名有改libtouchelper.so解码就会错误(你有办法解码就有办法知道哪里错误)。
三、libjni.so就照鬼谷子c教程改就好了。
另一种方式:
一、libjni.so修改Key.dat公钥。
二、libtouchelper.so解码之后修改Key.dat公钥,并更改加密方式,必须跟新的签名一样,将libjni.so的MD5修改libinit.so不变。
三、自己跑出Key.dat。
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
@ztxbeyond 也说说吧,如何HOOK,SO?
|
|
|