skylot/jadx · error · SmaliDebuggerException
jdwp handshake bad reply
Error message
jdwp handshake bad reply
What it means
Error "jdwp handshake bad reply" thrown in skylot/jadx.
Source
Thrown at jadx-gui/src/main/java/jadx/gui/device/debugger/SmaliDebugger.java:647
return new JDWP(sizes);
}
}
} catch (IOException e) {
throw new SmaliDebuggerException(e);
}
throw new SmaliDebuggerException("Failed to init JDWP.");
}
private static void handShake(OutputStream outputStream, InputStream inputStream) throws SmaliDebuggerException {
byte[] buf;
try {
outputStream.write(JDWP.encodeHandShakePacket());
buf = IOUtils.readNBytes(inputStream, 14);
} catch (Exception e) {
throw new SmaliDebuggerException("jdwp handshake failed", e);
}
if (buf == null || !JDWP.decodeHandShakePacket(buf)) {
throw new SmaliDebuggerException("jdwp handshake bad reply");
}
}
private MethodsWithGenericData getMethodBySig(long classID, String sig) {
List<MethodsWithGenericData> methods = clsMethodMap.get(classID);
if (methods != null) {
for (MethodsWithGenericData method : methods) {
if (sig.startsWith(method.name + "(") && sig.endsWith(method.signature)) {
return method;
}
}
}
return null;
}
private int genID() {
return idGenerator.getAndAdd(1);
}View on GitHub (pinned to e738a26571)
Solutions
- Compare the reply bytes against the expected handshake string and include the received bytes (hex) in the error message for diagnosis.
- If the reply is bad, close the socket and advise reconnecting the debugger, since the transport state is unrecoverable.
When it happens
Trigger: Thrown at jadx-gui/src/main/java/jadx/gui/device/debugger/SmaliDebugger.java:647 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- SSL/TLS and certificate errors — how TLS handshakes and certificate validation fail.
AI-assisted analysis of skylot/jadx@e738a26571 (2026-08-14).
Data as JSON: /api/errors/da9f4257e02eed26.
Report an issue: GitHub.