Exemple #1
0
  private static HookPage handleHookPage(ArtMethod original, ArtMethod replacement) {
    long originalEntryPoint =
        INSTRUCTION_SET_HELPER.toMem(original.getEntryPointFromQuickCompiledCode());
    if (!pages.containsKey(originalEntryPoint)) {
      pages.put(
          originalEntryPoint,
          new HookPage(
              INSTRUCTION_SET_HELPER, originalEntryPoint, getQuickCompiledCodeSize(original)));
    }

    HookPage page = pages.get(originalEntryPoint);
    page.addHook(new HookPage.Hook(original, replacement));
    page.update();
    return page;
  }
Exemple #2
0
 private static int getQuickCompiledCodeSize(ArtMethod method) {
   long entryPoint = INSTRUCTION_SET_HELPER.toMem(method.getEntryPointFromQuickCompiledCode());
   long sizeInfo1 = entryPoint - 4;
   byte[] bytes = Memory.get(sizeInfo1, 4);
   return ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getInt();
 }