diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index 0f59b8b..885332f 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -392,7 +392,7 @@
 }
 
 object Versions {
-  const val asmVersion = "9.7"
+  const val asmVersion = "9.7.1"
   const val errorproneVersion = "2.18.0"
   const val fastUtilVersion = "7.2.1"
   const val gsonVersion = "2.10.1"
diff --git a/src/main/java/com/android/tools/r8/cf/CfVersion.java b/src/main/java/com/android/tools/r8/cf/CfVersion.java
index 73fb34d..4567e7f 100644
--- a/src/main/java/com/android/tools/r8/cf/CfVersion.java
+++ b/src/main/java/com/android/tools/r8/cf/CfVersion.java
@@ -50,9 +50,11 @@
   public static final CfVersion V22_PREVIEW = new CfVersion(Opcodes.V22 | Opcodes.V_PREVIEW);
   public static final CfVersion V23 = new CfVersion(Opcodes.V23);
   public static final CfVersion V23_PREVIEW = new CfVersion(Opcodes.V23 | Opcodes.V_PREVIEW);
+  public static final CfVersion V24 = new CfVersion(Opcodes.V24);
+  public static final CfVersion V24_PREVIEW = new CfVersion(Opcodes.V24 | Opcodes.V_PREVIEW);
   // Tentatively support next class file version for testing with JDK and ASM head.
-  public static final CfVersion V24 = new CfVersion(68);
-  public static final CfVersion V24_PREVIEW = new CfVersion(68 | Opcodes.V_PREVIEW);
+  public static final CfVersion V25 = new CfVersion(69);
+  public static final CfVersion V25_PREVIEW = new CfVersion(69 | Opcodes.V_PREVIEW);
 
   private final int version;
 
@@ -79,7 +81,8 @@
     CfVersion.V20,
     CfVersion.V21,
     CfVersion.V22,
-    CfVersion.V23
+    CfVersion.V23,
+    CfVersion.V24
   };
 
   // Private constructor in case we want to canonicalize versions.
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 76d22ef..aa2c66c 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -180,7 +180,7 @@
     }
   }
 
-  public static final CfVersion SUPPORTED_CF_VERSION = CfVersion.V24;
+  public static final CfVersion SUPPORTED_CF_VERSION = CfVersion.V25;
 
   public static final int SUPPORTED_DEX_VERSION =
       AndroidApiLevel.LATEST.getDexVersion().getIntValue();
diff --git a/src/test/java/com/android/tools/r8/cf/ClassFileVersion68Test.java b/src/test/java/com/android/tools/r8/cf/ClassFileVersion68Test.java
index 12dd840..4fc2adc 100644
--- a/src/test/java/com/android/tools/r8/cf/ClassFileVersion68Test.java
+++ b/src/test/java/com/android/tools/r8/cf/ClassFileVersion68Test.java
@@ -4,7 +4,6 @@
 
 package com.android.tools.r8.cf;
 
-import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
@@ -34,8 +33,7 @@
     this.parameters = parameters;
   }
 
-  // Update ASM once it has a release with v24 support.
-  @Test(expected = CompilationFailedException.class)
+  @Test
   public void test() throws Exception {
     testForD8(parameters.getBackend())
         .addProgramClassFileData(transformer(TestClass.class).setVersion(CfVersion.V24).transform())
diff --git a/src/test/java/com/android/tools/r8/cf/ClassFileVersion69Test.java b/src/test/java/com/android/tools/r8/cf/ClassFileVersion69Test.java
new file mode 100644
index 0000000..f1e7569
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/cf/ClassFileVersion69Test.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.cf;
+
+import com.android.tools.r8.CompilationFailedException;
+import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.StringUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class ClassFileVersion69Test extends TestBase {
+
+  static final String EXPECTED = StringUtils.lines("Hello, world");
+
+  private final TestParameters parameters;
+
+  @Parameterized.Parameters(name = "{0}")
+  public static TestParametersCollection data() {
+    return getTestParameters()
+        .withDefaultRuntimes()
+        .enableApiLevelsForCf()
+        .withApiLevel(AndroidApiLevel.B)
+        .build();
+  }
+
+  public ClassFileVersion69Test(TestParameters parameters) {
+    this.parameters = parameters;
+  }
+
+  // Update ASM once it has a release with v25 support.
+  @Test(expected = CompilationFailedException.class)
+  public void test() throws Exception {
+    testForD8(parameters.getBackend())
+        .addProgramClassFileData(transformer(TestClass.class).setVersion(CfVersion.V25).transform())
+        .setMinApi(parameters)
+        .run(parameters.getRuntime(), TestClass.class)
+        .assertSuccessWithOutput(EXPECTED);
+  }
+
+  static class TestClass {
+
+    public static void main(String[] args) {
+      System.out.println("Hello, world");
+    }
+  }
+}
diff --git a/src/test/testbase/java/com/android/tools/r8/ToolHelper.java b/src/test/testbase/java/com/android/tools/r8/ToolHelper.java
index 0608acb..7ed8df4 100644
--- a/src/test/testbase/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/testbase/java/com/android/tools/r8/ToolHelper.java
@@ -221,8 +221,8 @@
 
   public static final String R8_TEST_BUCKET = "r8-test-results";
 
-  public static final String ASM_JAR = BUILD_DIR + "deps/asm-9.7.jar";
-  public static final String ASM_UTIL_JAR = BUILD_DIR + "deps/asm-util-9.7.jar";
+  public static final String ASM_JAR = BUILD_DIR + "deps/asm-9.7.1.jar";
+  public static final String ASM_UTIL_JAR = BUILD_DIR + "deps/asm-util-9.7.1.jar";
 
   public static final String LINE_SEPARATOR = StringUtils.LINE_SEPARATOR;
   public static final String CLASSPATH_SEPARATOR = File.pathSeparator;
diff --git a/third_party/dependencies.tar.gz.sha1 b/third_party/dependencies.tar.gz.sha1
index eacd0fe..c68f31b 100644
--- a/third_party/dependencies.tar.gz.sha1
+++ b/third_party/dependencies.tar.gz.sha1
@@ -1 +1 @@
-69699e487d7f4e51da88351227dd09a2eb3147f1
\ No newline at end of file
+29c74f72dedf594b5b240a66d85e431807a3a71f
\ No newline at end of file
diff --git a/tools/asmifier.py b/tools/asmifier.py
index 30412c1..58397d8 100755
--- a/tools/asmifier.py
+++ b/tools/asmifier.py
@@ -10,7 +10,7 @@
 import sys
 import utils
 
-ASM_VERSION = '9.7'
+ASM_VERSION = '9.7.1'
 ASM_JAR = os.path.join(utils.DEPENDENCIES_DIR, 'org', 'ow2', 'asm', 'asm',
                        ASM_VERSION, 'asm-' + ASM_VERSION + '.jar')
 ASM_UTIL_JAR = os.path.join(utils.DEPENDENCIES_DIR, 'org', 'ow2', 'asm',
diff --git a/tools/create_local_maven_with_dependencies.py b/tools/create_local_maven_with_dependencies.py
index 0df88f7..cb5928f 100755
--- a/tools/create_local_maven_with_dependencies.py
+++ b/tools/create_local_maven_with_dependencies.py
@@ -21,7 +21,7 @@
 ]
 
 ANDRDID_SUPPORT_VERSION = '25.4.0'
-ASM_VERSION = '9.7' # When updating update tools/asmifier.py and Toolhelper as well.
+ASM_VERSION = '9.7.1' # When updating update tools/asmifier.py and Toolhelper as well.
 ESPRESSO_VERSION = '3.0.0'
 FASTUTIL_VERSION = '7.2.1'
 KOTLIN_METADATA_VERSION = '2.0.0'
