diff --git a/cros_run_vm_test b/cros_run_vm_test
index 6f6bd6a..2a84f60 100755
--- a/cros_run_vm_test
+++ b/cros_run_vm_test
@@ -39,8 +39,7 @@
 
 # Use latest if not specified.
 if [ -z "${FLAGS_image_path}" ]; then
-  LATEST_IMAGE="$("${SCRIPT_ROOT}/get_latest_image.sh" \
-      --board=${FLAGS_board})/${DEFAULT_QEMU_IMAGE}"
+  LATEST_IMAGE="${IMAGES_DIR}/${FLAGS_board}/latest/${DEFAULT_QEMU_IMAGE}"
   info "Using latest vm image ${LATEST_IMAGE}"
   FLAGS_image_path=${LATEST_IMAGE}
 fi
diff --git a/ctest/ctest.py b/ctest/ctest.py
index 9d5f2d1..b090f3d 100755
--- a/ctest/ctest.py
+++ b/ctest/ctest.py
@@ -1,4 +1,5 @@
 #!/usr/bin/env python2
+# -*- coding: utf-8 -*-
 #
 # Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
@@ -97,15 +98,15 @@
     """Initializes the target and base images for CTest."""
     if not self.target:
       # Grab the latest image we've built.
-      return_object = cros_build_lib.RunCommand(
-          ['./get_latest_image.sh', '--board=%s' % self.board],
-          cwd=self.crosutils_root, redirect_stdout=True, print_cmd=False)
+      board_images = os.path.join(constants.SOURCE_ROOT, 'src/build/images',
+                                  self.board)
+      latest = os.path.join(board_images, 'latest')
+      version_dir = os.readlink(latest)
+      latest_image_dir = os.path.join(board_images, version_dir)
 
-      latest_image_dir = return_object.output.strip()
       self.target = os.path.join(
           latest_image_dir, image_extractor.ImageExtractor.IMAGE_TO_EXTRACT)
 
-
     # Grab the latest official build for this board to use as the base image.
     if self.archive_dir:
       target_version = os.path.realpath(self.target).rsplit('/', 2)[-2]
diff --git a/ctest/ctest_unittest.py b/ctest/ctest_unittest.py
index d2a5656..9fb6344 100755
--- a/ctest/ctest_unittest.py
+++ b/ctest/ctest_unittest.py
@@ -1,4 +1,5 @@
-#!/usr/bin/python2
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
 #
 # Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
@@ -96,18 +97,18 @@
     self.mox.StubOutWithMock(cros_build_lib, 'RunCommand')
     self.mox.StubOutWithMock(ctest.CTest, '__init__')
     self.mox.StubOutWithMock(image_extractor.ImageExtractor, 'GetLatestImage')
-    fake_result = self.mox.CreateMock(cros_build_lib.CommandResult)
-    fake_result.output = '/some/path_to/latest_version'
+    self.mox.StubOutWithMock(os, 'readlink')
 
     fake_crosutils = os.path.join(self.FAKE_ROOT, 'src', 'scripts')
+    img_dir = os.path.join(constants.SOURCE_ROOT, 'src', 'build', 'images',
+                           'board', 'latest')
+    expected_base = os.path.join(constants.SOURCE_ROOT, 'src', 'build',
+                                 'images', 'board', 'linkval')
 
     ctest.CTest.__init__(None)
-    cros_build_lib.RunCommand(
-        mox.In('./get_latest_image.sh'), cwd=fake_crosutils, print_cmd=False,
-        redirect_stdout=True).AndReturn(fake_result)
     # pylint: disable=no-value-for-parameter
-    image_extractor.ImageExtractor.GetLatestImage('latest_version').AndReturn(
-        None)
+    os.readlink(img_dir).AndReturn('linkval')
+    image_extractor.ImageExtractor.GetLatestImage('linkval').AndReturn(None)
     # pylint: enable=no-value-for-parameter
 
     self.mox.ReplayAll()
@@ -121,7 +122,7 @@
     self.mox.VerifyAll()
     self.assertEqual(ctester.base, ctester.target)
     self.assertEqual(ctester.base, os.path.join(
-        fake_result.output, image_extractor.ImageExtractor.IMAGE_TO_EXTRACT))
+        expected_base, image_extractor.ImageExtractor.IMAGE_TO_EXTRACT))
 
 
 if __name__ == '__main__':
