{"id":4625,"date":"2023-08-29T11:39:59","date_gmt":"2023-08-29T19:39:59","guid":{"rendered":"https:\/\/www.pnfsoftware.com\/blog\/?p=4625"},"modified":"2025-09-10T15:06:21","modified_gmt":"2025-09-10T23:06:21","slug":"jeb-assistant","status":"publish","type":"post","link":"https:\/\/www.pnfsoftware.com\/blog\/jeb-assistant\/","title":{"rendered":"JEB Assistant (legacy)"},"content":{"rendered":"\n<p><em>Update (2025\/09\/10): The legacy assistant is superseded by VIBRE, a full-blown conversational AI agent available in JEB 5.32+. Read more <a href=\"https:\/\/www.pnfsoftware.com\/blog\/vibe-reversing-with-vibre-ai-assistant\/\">here<\/a>!<\/em><\/p>\n\n\n\n<p><em>Update (2025\/08\/17): The assistant was updated for the release of JEB 5.31. Restrictions in terms of decompiled code size were loosened; back-end language models were upgraded to provide better suggestions.<\/em><\/p>\n\n\n\n<p><em>Update (2023\/12\/06): Several restrictions are lifted in JEB 5.6 to make the Assistant available for Java decompiled output generated by dexdec (it is currently limited to C output generated by gendec).<\/em><\/p>\n\n\n\n<p>Starting from JEB 5.2, you may use the experimental &#8220;JEB Assistant&#8221; to infer names for decompiled classes, fields, methods and method parameters.<\/p>\n\n\n\n<p>Below is a decompiled aarch64 routine found in the <code>BPFDoor<\/code> malware. A raw decompilation does not produce any useful name (the default routine name is <code>sub_40157C<\/code>).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"469\" src=\"https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-2-1024x469.png\" alt=\"\" class=\"wp-image-4628\" srcset=\"https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-2-1024x469.png 1024w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-2-300x138.png 300w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-2-768x352.png 768w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-2-1536x704.png 1536w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-2-2048x939.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">An unnamed arm64 decompiled routine<\/figcaption><\/figure>\n\n\n\n<p>You may click the &#8220;Call the Assistant&#8221; button (also available via the <em>Action<\/em> menu, <em>Request Assistant<\/em> handler, or the back-tick keyboard shortcut) to query the assistant via JEB.IO. At the time of writing, a JEB.IO account is not required to access the assistant.<\/p>\n\n\n\n<p>Upon first request, a disclaimer will be shown, letting you know that the decompiled code must be sent to our server:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"387\" src=\"https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-3-1024x387.png\" alt=\"\" class=\"wp-image-4629\" style=\"width:687px;height:259px\" srcset=\"https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-3-1024x387.png 1024w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-3-300x114.png 300w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-3-768x291.png 768w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-3.png 1509w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">The disclaimer is shown the first time the assistant is called<\/figcaption><\/figure>\n\n\n\n<p>The assistant <strong>may<\/strong> return a better name for the method and its parameters. Sometimes, the names may be incorrect, yet provide some insight into what the method is doing. Other times, they may be entirely out of scope! <strong>It is always better to take the provided results as hints, rather than absolute truths.<\/strong><\/p>\n\n\n\n<p>In the case of our mysterious method, the assistant did provide valuable information: <code>decryptData(data, size, key)<\/code>. Indeed, the method is a decryption function &#8212; more specifically, rc4 with a pre-computed sbox. The parameter names are (almost) correct.<\/p>\n\n\n\n<p>You may decide to apply the suggested method name directly. The suggested parameter names are not applied automatically.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"452\" src=\"https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-5-1024x452.png\" alt=\"\" class=\"wp-image-4632\" srcset=\"https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-5-1024x452.png 1024w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-5-300x132.png 300w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-5-768x339.png 768w, https:\/\/www.pnfsoftware.com\/blog\/wp-content\/uploads\/2023\/08\/image-5.png 1376w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">The assistant is providing the suggestions, it is up to the user to apply them<\/figcaption><\/figure>\n\n\n\n<p>Currently, some limitations apply:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The assistant is not available via the JEB API and requests are rate-limited (at most one every 5 seconds).<\/li>\n\n\n\n<li>The suggestions are mostly for class, method, and field names. Sometimes, suggestions for variable names are returned as well, but won&#8217;t be auto-applied.<\/li>\n<\/ul>\n\n\n\n<p>A JEB.IO account is not required at this time to use the assistant! Anybody can use it to (sometimes) gain insight into obscure decompilations. We hope it will help you in your reverse-engineering efforts. Please let us know your feedback through the usual channels (<a href=\"mailto:support@pnfsoftware.com\">email<\/a>, <a href=\"https:\/\/www.pnfsoftware.com\/chat\">Slack<\/a>, etc.).<\/p>\n\n\n\n<p>Until next time \ud83d\ude42 &#8212; Nicolas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Update (2025\/09\/10): The legacy assistant is superseded by VIBRE, a full-blown conversational AI agent available in JEB 5.32+. Read more here! Update (2025\/08\/17): The assistant was updated for the release of JEB 5.31. Restrictions in terms of decompiled code size were loosened; back-end language models were upgraded to provide better suggestions. Update (2023\/12\/06): Several restrictions &hellip; <a href=\"https:\/\/www.pnfsoftware.com\/blog\/jeb-assistant\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">JEB Assistant (legacy)<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31,3,30],"tags":[],"class_list":["post-4625","post","type-post","status-publish","format-standard","hentry","category-assistant","category-decompilation","category-jeb5"],"_links":{"self":[{"href":"https:\/\/www.pnfsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/4625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pnfsoftware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pnfsoftware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pnfsoftware.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pnfsoftware.com\/blog\/wp-json\/wp\/v2\/comments?post=4625"}],"version-history":[{"count":0,"href":"https:\/\/www.pnfsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/4625\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.pnfsoftware.com\/blog\/wp-json\/wp\/v2\/media?parent=4625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pnfsoftware.com\/blog\/wp-json\/wp\/v2\/categories?post=4625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pnfsoftware.com\/blog\/wp-json\/wp\/v2\/tags?post=4625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}