parent
							
								
									17171167ac
								
							
						
					
					
						commit
						27f5269df1
					
				
									
										
											File diff suppressed because it is too large
											Load Diff
										
									
								
							
						| @ -1,31 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of FYReader. | ||||
|  * FYReader is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * FYReader is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with FYReader.  If not, see <https://www.gnu.org/licenses/>.
 | ||||
|  * | ||||
|  * Copyright (C) 2020 - 2022 fengyuecanzhu | ||||
|  */ | ||||
| 
 | ||||
| package xyz.fycz.dynamic; | ||||
| 
 | ||||
| /** | ||||
|  * Generated code from StringFog gradle plugin. Do not modify! | ||||
|  */ | ||||
| public final class StringFog { | ||||
|   private static final StringFogImpl IMPL = new StringFogImpl(); | ||||
| 
 | ||||
|   public static String decrypt(byte[] value, byte[] key) { | ||||
|     return IMPL.decrypt(value, key); | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| @ -1,59 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of FYReader. | ||||
|  * FYReader is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * FYReader is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with FYReader.  If not, see <https://www.gnu.org/licenses/>.
 | ||||
|  * | ||||
|  * Copyright (C) 2020 - 2022 fengyuecanzhu | ||||
|  */ | ||||
| 
 | ||||
| package xyz.fycz.dynamic; | ||||
| 
 | ||||
| import java.nio.charset.StandardCharsets; | ||||
| 
 | ||||
| /** | ||||
|  * StringFog xor encrypt and decrypt implementation. | ||||
|  * | ||||
|  * @author Megatron King | ||||
|  * @since 2018/9/2 14:34 | ||||
|  */ | ||||
| public final class StringFogImpl { | ||||
| 
 | ||||
|     public byte[] encrypt(String data, byte[] key) { | ||||
|         return xor(data.getBytes(StandardCharsets.UTF_8), key); | ||||
|     } | ||||
| 
 | ||||
|     public String decrypt(byte[] data, byte[] key) { | ||||
|         return new String(xor(data, key), StandardCharsets.UTF_8); | ||||
|     } | ||||
| 
 | ||||
|     public boolean shouldFog(String data) { | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     private static byte[] xor(byte[] data, byte[] key) { | ||||
|         int len = data.length; | ||||
|         int lenKey = key.length; | ||||
|         int i = 0; | ||||
|         int j = 0; | ||||
|         while (i < len) { | ||||
|             if (j >= lenKey) { | ||||
|                 j = 0; | ||||
|             } | ||||
|             data[i] = (byte) (data[i] ^ key[j]); | ||||
|             i++; | ||||
|             j++; | ||||
|         } | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -1,78 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of FYReader. | ||||
|  * FYReader is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * FYReader is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with FYReader.  If not, see <https://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  * Copyright (C) 2020 - 2022 fengyuecanzhu | ||||
|  */ | ||||
| 
 | ||||
| package xyz.fycz.dynamic.fix | ||||
| 
 | ||||
| import me.fycz.maple.MapleBridge | ||||
| import me.fycz.maple.MapleUtils | ||||
| import me.fycz.maple.MethodReplacement | ||||
| import xyz.fycz.myreader.application.App | ||||
| import xyz.fycz.myreader.model.user.UserService | ||||
| import xyz.fycz.myreader.util.AppInfoUtils | ||||
| import xyz.fycz.myreader.util.utils.EncoderUtils | ||||
| 
 | ||||
| /** | ||||
|  * @author fengyue | ||||
|  * @date 2022/5/23 18:20 | ||||
|  */ | ||||
| @AppFix([243, 244, 245], ["修改用户服务验证机制(beta)"], "2022-05-23") | ||||
| class App245Fix : AppFixHandle { | ||||
| 
 | ||||
|     override fun onFix(key: String): BooleanArray { | ||||
|         val result = try { | ||||
|             fixMakeAuth() | ||||
|             true | ||||
|         } catch (e: Exception) { | ||||
|             MapleUtils.log(e) | ||||
|             false | ||||
|         } | ||||
|         fixResult(key, "makeAuth", result) | ||||
|         return booleanArrayOf(result) | ||||
|     } | ||||
| 
 | ||||
|     private fun fixMakeAuth() { | ||||
|         MapleUtils.findAndHookMethod( | ||||
|             UserService::class.java, | ||||
|             "makeAuth", | ||||
|             object : MethodReplacement() { | ||||
|                 override fun replaceHookedMethod(param: MapleBridge.MethodHookParam): Any { | ||||
|                     return makeAuth() | ||||
|                 } | ||||
|             } | ||||
|         ) | ||||
|     } | ||||
| 
 | ||||
|     fun makeAuth(): String { | ||||
|         var auth = "signal=" + AppInfoUtils.getSingInfo( | ||||
|             App.getmContext(), | ||||
|             App.getApplication().packageName, | ||||
|             AppInfoUtils.SHA1 | ||||
|         ) + "&appVersion=" + App.getVersionCode() | ||||
|         auth = try { | ||||
|             EncoderUtils.encryptAES2Base64( | ||||
|                 auth.toByteArray(), "79qdunN8534y44T3".toByteArray(), | ||||
|                 "AES/ECB/PKCS5Padding" | ||||
|             )?.let { String(it) }.toString() | ||||
|         } catch (e: Exception) { | ||||
|             "" | ||||
|         } | ||||
|         return "&auth=$auth" + | ||||
|                 "&deviceId=" + UserService.getUUID() + | ||||
|                 "&isDebug=" + App.isDebug() | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue