我查查 6.6 去校验分析
其实我是不用这个软件的,不过受烈火之托,就看了看这个校验,据说在.so文件中。
首先呢,用VTS打开apk文件,经过初步分析,判断是否被修改全部根据下面这个位于com/wochacha/datacenter/DataProvider中的函数的返回值
.method private native init()I .end method
这是个native函数,所以确实是在.so文件中的。 经过搜索,发现libe.so文件中Java_com_wochacha_datacenter_DataProvider_init函数,果断IDA打开libe.so。
EXPORT Java_com_wochacha_datacenter_DataProvider_init Java_com_wochacha_datacenter_DataProvider_init PUSH {R4,LR} BL _Z9checkSignP7_JNIEnvP8_jobject ; checkSign(_JNIEnv *,_jobject *) POP {R4,PC} ; End of function Java_com_wochacha_datacenter_DataProvider_init
这个函数直接跳转到checkSign(_JNIEnv *,_jobject *)函数,这个函数名敢再直白一点吗?
稍微看了一下,这个checkSign函数,就只是先是检查了一下com/wochacha/util/WccConstant的DEBUG常量,然后计算并对比了一下apk签名的MD5,并没有什么特殊操作。
本着一切从简的原则,能不改.so就不改.so。
于是回到DataProvider.smali,搜索了一下init()I这个函数只在这一个地方被调用了,于是干脆把调用函数以及判断返回结果的代码全部注释掉,让他直接把1写入initResult:Z。
修改之后代码如下:
#.line 108 #invoke-direct {p0}, Lcom/wochacha/datacenter/DataProvider;->init()I #move-result v0 #.line 109 #if-nez v0, :cond_29 #.line 110 #const/4 v0, 0x0 #iput-boolean v0, p0, Lcom/wochacha/datacenter/DataProvider;->initResult:Z #.line 113 #:goto_28 #return-void #.line 112 #:cond_29 iput-boolean v1, p0, Lcom/wochacha/datacenter/DataProvider;->initResult:Z return-void #goto :goto_28
重新编译,测试一下,本来以为没什么问题了,可惜后来发现不管扫什么条形码都说没有收录。
果然没这么简单,搜索PackageManager,发现libgcbarcode_j.so里面居然有,嗯,很可疑,IDA之。
找到Gc_func_ab函数,果然有校验,不过貌似只是对比了一下包名和软件名,不过管它呢,虽然我不需要改动这些,但是既然见到了校验怎么能不去掉呢。
所有的几个对比失败了都会跳转到这里。
MOV R0, #0 LDMFD SP!, {R3-R11,PC}
#0改成#1即可。
只好继续找了,我又尝试搜索了几个常见的关键词,都没有什么收获。那就只好从问题入手分析了。
首先找到显示条形码没有收录的界面的函数是com/wochacha/compare/CommodityCompareResultActivity的showInValidInfo(Ljava/lang/String;)V。
会调用这个函数是因为barcodeErrorType:Ljava/lang/String;是255,这个变量的值是从Lcom/wochacha/datacenter/BarcodeInfo;->ErrorType:Ljava/lang/String;得到的,而唯一修改ErrorType的函数就是BarcodeInfo中的setErrorType(Ljava/lang/String;)V。
经过搜索,又回到了DataProvider.smali。分析发现这个错误代码来自一个json数据,而这个json是从网络获取的。此时我有点绝望,但仔细分析构建url的代码后,发现url中的barcode参数实际上是加了密的,并且还有一个参数是b_en就是用来加密的,把它也传给服务器说明也可以用它来解密。这时思路顿时清晰了,下面来看看加密过程吧。
这里必须要插一句,看了这个url的参数我算是体会到这款软件是有多么流氓了,完全没有考虑用户隐私,就一个查询条形码的请求,参数中居然包括了UDID(就是你的IMEI),MAC地址,连接方式(wifi或者3G), 最恐怖的是,如果定位信息可用的话还会把GPS的经纬度坐标也发给服务器。
回到barcode加密,实际调用的是Lcom/wochacha/datacenter/DataProvider;->convertData([BII)Ljava/lang/String;函数。看到函数的原型我笑了。
.method private native convertData([BII)Ljava/lang/String; .end method
果然又是native啊(喂喂不是naive啊看清楚你想什么呢)。搜索显示这个函数也在libe.so,可是这个文件很小,总共也只有不到十个函数,如果有这个函数我之前怎么会没看到呢?再次打开IDA,果然函数列表中没有这个函数,看上去应该是IDA的bug。
看了半天convertData,实际上关键部分不在这里,而是在wcc_encode函数,这个函数之前我也有看到,但是没有找到任何地方会调用这个函数(都怪IDA),于是也没注意。
这回仔细看一下,函数开头读取了内存中的一个值,和1比较,之后会有两种不同的encode算法,这两种算法绝大部分都一样,只是其中一个算法在某一步读取内存时多加了个0xC的偏移。
再看了看,之前比较的那个值貌似就是checkSign函数最后保存的。于是我修改了几个指令让checkSign函数所有情况都会返回并且保存1。
测试一下,居然还是不行!才想起来最开始的修改直接把调用init()I的代码注释掉了,导致checkSign函数根本没运行,从而也无法将1保存到内存中。
这次把最开始的修改恢复成原始的样子,打包,测试。
终于没问题了,剩下的去广告之类的工作就交给烈火吧。
写这篇文章也算是让自己记住这次教训,本来很容易的一件事,绕了一大圈最后还是回到原地解决。
哈哈哈
不明觉厉,作者辛苦了~
(╭☞•́∀•̀)╭☞知道乃有多辛苦,摸摸头~
跪求更新qq5.0,j大
高手!不过话说Jayxon老大怎么放弃更新QQ了?导致网上有一个人牛哄哄的,觉得他修改的QQ好,我呸~
不明觉厉啊,,,,好厉害的样子。
不明觉厉
依旧是 不明觉厉!!
大拇哥 树一个!
不明觉厉……
J大的软件好顶赞!每天必定会上来看看有没有更新!
说好的QQ呢,说好的迅雷呢?新年快乐,马上有钱,马上有绿软
J大 新年快乐 !
新年第一遍博文 还是技术文档 大赞
国产软件流氓本色啊,还好我尽量都是外国软件全英文。。。原来J大和烈火大大都认识。。。等大大的迅雷更新
看浏览器
博主辛苦了!喜欢用您制作的绿色软件。祝您新年快乐,平安吉祥!
跪求j大简单做个最新迅雷vip版精简,现在的其他版本或多或少都有点问题。。
博主是否能更新下迅雷 之前的迅雷Thunder 7.2.13.3884 JayXon绿色精简版 一直使用很不错 谢谢
正常,不能说容易,你不到最后折腾这么久,也不会想到checkSign里面改了一个值影响到别的地方。
不明觉厉,盼老大新作品
好好,又学习了一下分析思路,支持这样的心得分享!
我查查 6.6 去校验分析
大神就是大神啊。等待烈火出APP
过去一看,果然已经出了。嘿嘿。
膜拜大牛,能不能改一个发送虚假UDID,MAC的版本?
这种功能改起来比较麻烦,建议使用XPrivacy实现
这垃圾软件早就删了。
好棒
烈火大神他为什么不怕查水表
rhrhsf
手机软件也越来越多广告了
求问那个wordpress的代码插件是叫什么名字?
Crayon Syntax Highlighter
其实,你右键代码那,一般就能知道是什么插件了
补充,右键,查看一下网页源码或点审查元素等
ssssssssssssssssssss
ghddgghc
学习了。
我觉得我查查还行吧,二维码的数据比灵动快拍丰富多了,就是广告有点多
老大 什么时候把迅雷更新下哈 望眼欲穿啊
J兄威武啊,话说迅雷好久没见你更新了,有查水表的?
好久不更新了,我还以为你弃了呢
换浏览器了
看看浏览器
你们分工还真明确,我用过qq2010jayxon
那么古老的版本。。。
请问J大,烈火是谁?是汉化winrar的那个?
嗯
友情链接里的“心海e站”便是烈火的博客啦
J大再不更新我要查你水表
这代码字体是comic sans吗/..为毛在我的IDE上面显示比这个丑多了~
是Monaco
请问J大大的QQ2013精简版什么时候出新的啊?
请问J大大的QQ2013精简版什么时候出新的啊?
楼主厉害啊,与时俱进,用你的迅雷用了好久了,现在又研究安卓这块了
求J大更新一下QQ2014版本,2013问题太多了,12和11版现在又被封。
烈火开始弄APK了啊,期待啊
test
test2
楼主厉害,逆向工程
给力啊,技术达人。
技术狂人
大/神能告诉我我查查这个应用输入条码后提交的查询地址是多少?wochacha/scan/+输入的条码吗?
能告诉下你这个思维导图是用什么软件做的吗?
IDA的Graphic View,不是做的图片,只是截图。
http://android.wochacha.com/zzD8DCFC2FB98BC85E261070A7B4912414307032236C20EB978C520022042068D3987044024440EB11325021887031CC8498723C802C408ED22852702300D18547A070660104D0C1C186134A219CF00E83A422192DA0F18E432A8157871C5103121872748F44E043CB385066A76811C3874AB11C224D93A6852CD2388874B099D10C10068FEDF0224250435B26D15304C60CD31E283DA1D89D3043292B58920CCCB673380D4930864186421A2A3CA06E17B0666601455081CD8E501A2918200E17E0223923F8C0A8912A0075871050808EFA7F3F09DD90E5D3CAEF2028DDC2BF82
条码6921168509256
这是怎么算出来的啊
我来看看UA
烈火是谁