33import android .app .Activity ;
44import android .app .ActivityManager ;
55import android .content .Context ;
6+ import android .net .ConnectivityManager ;
7+ import android .net .LinkProperties ;
8+ import android .net .Network ;
69import android .os .Build ;
710import android .system .ErrnoException ;
811import android .system .Os ;
1417import java .io .BufferedReader ;
1518import java .io .File ;
1619import java .io .FileReader ;
20+ import java .io .FileWriter ;
1721import java .io .IOException ;
22+ import java .net .InetAddress ;
1823import java .util .ArrayList ;
1924import java .util .Arrays ;
2025import java .util .List ;
@@ -252,6 +257,22 @@ public static int launchJavaVM(final Activity activity, final List<String> JVMAr
252257 return exitCode ;
253258 }
254259
260+ private static void writeDNS (Context ctx , File out ) throws IOException {
261+ FileWriter writer = new FileWriter (out );
262+
263+ ConnectivityManager cm = (ConnectivityManager ) ctx .getSystemService (Context .CONNECTIVITY_SERVICE );
264+ Network activeNetwork = cm .getActiveNetwork ();
265+ LinkProperties lp = cm .getLinkProperties (activeNetwork );
266+ if (lp == null )
267+ return ;
268+
269+ List <InetAddress > dnsServers = lp .getDnsServers ();
270+ for (InetAddress dns : dnsServers ) {
271+ writer .write (String .format ("nameserver %s\n " , dns .getHostAddress ()));
272+ writer .flush ();
273+ }
274+ writer .close ();
275+ }
255276
256277 /**
257278 * Gives an argument list filled with both the user args
@@ -260,6 +281,12 @@ public static int launchJavaVM(final Activity activity, final List<String> JVMAr
260281 * @return A list filled with args.
261282 */
262283 public static List <String > getJavaArgs (Context ctx , MinecraftInstances .Instance instance ) {
284+ File resConfFile = new File (Constants .USER_HOME + "/hacks/resolv.conf" );
285+ try {
286+ writeDNS (ctx , resConfFile );
287+ } catch (IOException e ) {
288+ Logger .getInstance ().appendToLog ("Couldn't write DNS servers! " + e .getMessage ());
289+ }
263290 return new ArrayList <>(Arrays .asList (
264291 "-Djava.home=" + new File (ctx .getFilesDir (), "runtimes/JRE" ),
265292 "-Djava.io.tmpdir=" + ctx .getCacheDir ().getAbsolutePath (),
@@ -276,9 +303,10 @@ public static List<String> getJavaArgs(Context ctx, MinecraftInstances.Instance
276303 "-Dglfwstub.initEgl=false" ,
277304 "-Dlog4j2.formatMsgNoLookups=true" , //Log4j RCE mitigation
278305 "-Dnet.minecraft.clientmodname=" + "QuestCraft" ,
279- "-Dext.net.resolvPath=" + Constants . USER_HOME + "/hacks/ResConfHack.jar" ,
306+ "-Dext.net.resolvPath=" + resConfFile ,
280307 "-Dsodium.checks.issue2561=false" ,
281- "-Dorg.sqlite.lib.path=" + ctx .getApplicationInfo ().nativeLibraryDir ));
308+ "-Dorg.sqlite.lib.path=" + ctx .getApplicationInfo ().nativeLibraryDir
309+ ));
282310 }
283311
284312 /**
0 commit comments