|

本帖最后由 yuan25682568 于 2017-3-26 20:27 编辑
跟朋友DREAM一起解的这个app
- param=ThBaSmhURENePBRSUg9LFwZCGgMGThdBBENHWlBEX0AGCwcLDwcCBhNPRFpUBVBBWRJ%2FbRoyAANUABYfFhMQC1EQCRtRU1dRVwUAURgFXQEBHVlYD1MYVwNWUh5SAAMEUVECAQMNBQcTT0RWVgVdEBASAhsOVFcBUVYNBg1SV1cFAgVcUgYFUwgGUQABVVkCBgUNChUf
复制代码 加密的是param参数,参数看出来像base64加密,但是base解出来却是乱码。
反编译这个app,得到核心代码段:
- public static final String a = "{C8B22E37-PGDF-4b84-ACDA-18A27D09D18B}";
-
- public static String a(String paramString)
- {
- return a("{C8B22E37-PGDF-4b84-ACDA-18A27D09D18B}", paramString);
- }
-
- public static String a(String paramString1, String paramString2)
- {
- paramString1 = x.a(paramString1);
- byte[] arrayOfByte = paramString2.getBytes();
- int j = paramString1.length();
- int k = arrayOfByte.length;
- paramString2 = new byte[arrayOfByte.length];
- for (int i = 0; i < k; i++)
- {
- int m = arrayOfByte[i];
- paramString2[i] = ((byte)(byte)(paramString1.charAt(i % j) ^ m));
- }
- try
- {
- paramString1 = new java/lang/String;
- paramString1.<init>(Base64.encode(paramString2, 2), "utf-8");
- return paramString1;
- }
- catch (UnsupportedEncodingException paramString1)
- {
- for (;;)
- {
- paramString1.printStackTrace();
- paramString1 = null;
- }
- }
- }
复制代码 到了这里对java有基础的应该看出来了加密方法,是字节集通过一定的运算后再拿去base64加密。
在安卓包里找到这段代码,文件注入,找到4个位置关键位置,因为是字节集,输出十六进制:
523975171cf75f8cc0897b51e0434feb(传入值,非16进制)
7b2269735f6175746f5f7265676973746572223a312c22706173736964223a223339343238323331222c226d616368223a2247542d5035323130222c2275756964223a2266666666666666662d636562622d616138312d666666662d666666666463313834383430222c22616363657373223a223936623034663935393432353030366565333464396537373433616165353533227d
4e105a4a685444435e3c1452520f4b1706421a03064e17410443475a50445f40060b070b0f070206134f445a5405504159127f6d1a3200035400161f1613100b5110091b515357515705005118055d01011d59580f5318570356521e5200030451510201030d0507134f445656055d101012021b0e54570151560d060d5257570502055c52060553080651000155590206050d0a151f
54684261536d685552454e65504252535567394c46775a4347674d475468644242454e48576c4245583041474377634c4477634342684e50524670554256424257524a2f62526f7941414e554142596646684d5143314551435274525531645256775541555267465851454248566c5944314d5956774e575568355341414d455556454341514d4e425163545430525756675664454241534168734f564663425556594e42673153563163464167566355675946557767475551414256566b434267554e43685566
第一行为{C8B22E37-PGDF-4b84-ACDA-18A27D09D18B}的md5
第二行为传入到方法的文本,用16转10进制结果为:{"is_auto_register":1,"passid":"39428231","mach":"GT-P5210","uuid":"ffffffff-cebb-aa81-ffff-ffffdc184840","access":"96b04f959425006ee34d9e7743aae553"}
第三行为处理后的值,这个无法转
第四行为 把第三步的值 base64加密
这样我们知道明文为:{"is_auto_register":1,"passid":"39428231","mach":"GT-P5210","uuid":"ffffffff-cebb-aa81-ffff-ffffdc184840","access":"96b04f959425006ee34d9e7743aae553"}
我们把明文自己处理下看看能不能达到他的效果:
我用易语言试了下没有把这段完整的代码翻译过来,(不是翻译不了,花时间总能调出来),
改用java写出来了,如图:
得到的字节集是:
78,16,90,74,104,84,68,67,94,60,20,82,82,15,75,23,6,66,26,3,6,78,23,65,4,67,71,90,80,68,95,64,6,11,7,11,15,7,2,6,19,79,68,90,84,5,80,65,89,18,127,109,26,50,0,3,84,0,22,31,22,19,16,11,81,16,9,27,81,83,87,81,87,5,0,81,24,5,93,1,1,29,89,88,15,83,24,87,3,86,82,30,82,0,3,4,81,81,2,1,3,13,5,7,19,79,68,86,86,5,93,16,16,18,2,27,14,84,87,1,81,86,13,6,13,82,87,87,5,2,5,92,82,6,5,83,8,6,81,0,1,85,89,2,6,5,13,10,21,31
效果一样!
|
评分
-
查看全部评分
|