{"id":15547,"date":"2022-10-12T01:56:49","date_gmt":"2022-10-11T20:26:49","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/"},"modified":"2022-10-12T01:56:49","modified_gmt":"2022-10-11T20:26:49","slug":"solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/","title":{"rendered":"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-53894009\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"53894009\" data-parentid=\"53893535\" data-score=\"1\" data-position-on-page=\"2\" data-highest-scored=\"0\" data-question-has-accepted-highest-score=\"0\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<blockquote>\n<p>How to extract all functions out of a compiled elf file,even the function has no symbol<\/p>\n<\/blockquote>\n<p>You don&#8217;t define what is a function for you (and you really should).<\/p>\n<p>Notice that if the compiler has <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Inline_expansion\"><em>inlined<\/em><\/a> a function, it does not appear in the ELF file, even if of course it exists in the source code (the entire program could have been built with link-time optimization, e.g. <code>g++ -flto -O2<\/code> at both compile and link time; then you would have many inlined functions, including several which are <em>not<\/em> marked <code>inline<\/code> in the source code).<\/p>\n<p>The original source code could have been compiled with <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/gcc.gnu.org\/wiki\/Visibility\">visibility<\/a> tricks.<\/p>\n<p>The software build might have used some <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Obfuscation_(software)\">code obfuscation<\/a> techniques.<\/p>\n<p>If some function is called <em>only<\/em> indirectly (think of a virtual method in C++, always called thru some <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Virtual_method_table\">vtable<\/a>; or think of some <code>static<\/code> function whose address is put into some function pointer variable or <code>struct<\/code> field) then you practically cannot detect it, since to reliably do that on the binary executable requires a precise analysis of all the possible (function pointer) values of some register or memory location (and that is <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Undecidable_problem\">undecidable<\/a>, see <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rice%27s_theorem\">Rice&#8217;s theorem<\/a>).<\/p>\n<p>A program can also load a <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Plug-in_(computing)\">plugin<\/a> at runtime (e.g. using <code>dlopen<\/code>) and call functions in it. It could also generate some machine code when running (e.g. with the help of GNU <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.gnu.org\/software\/lightning\/\">lightning<\/a>, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/github.com\/asmjit\/asmjit\">asmjit<\/a>, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/gcc.gnu.org\/onlinedocs\/jit\/\">libgccjit<\/a>, etc&#8230;) and call such a generated function.<\/p>\n<p>So in general <strong>you cannot achieve your goal<\/strong> (especially if you assume that your &#8220;adversary&#8221;, the software writer, use clever techniques to make that function extraction difficult). In general, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Decompiler\">decompilation<\/a> is impossible (if you want it to be precise and complete).<\/p>\n<p>However, arrowd&#8217;s answer is proposing some crude and incomplete approximation. You need to decide if that is enough (and even IDA is giving approximate results).<\/p>\n<p>At last, in some legal systems, decompilation or <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Reverse_engineering\">reverse engineering<\/a> of a binary <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Executable\">executable<\/a> is forbidden (even when technically possible); check the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/End-user_license_agreement\">EULA<\/a> or contract (or law) related to your binary software and your situation. You really should verify that what you are trying to do is legal (and it might not be, and in some cases you could risk jail).<\/p>\n<p>BTW, all these reasons is why I prefer to always use <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Free_software\">free software<\/a>, whose source code is published and can be studied and improved. I am willingly avoiding <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Proprietary_software\">proprietary software<\/a>.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved How to extract all functions out of a compiled elf file,even the function has no symbol [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] How to extract all functions out of a compiled elf file,even the function has no symbol You don&#8217;t define what is a function for you (and you really should). Notice that if the compiler has inlined a function, it does not appear in the ELF file, even if of course it exists in the &#8230; <a title=\"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/\" aria-label=\"More on [Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,4010,642,4009],"class_list":["post-15547","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-elf","tag-reverse","tag-reverse-engineering"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] How to extract all functions out of a compiled elf file,even the function has no symbol You don&#8217;t define what is a function for you (and you really should). Notice that if the compiler has inlined a function, it does not appear in the ELF file, even if of course it exists in the ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-11T20:26:49+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed]\",\"datePublished\":\"2022-10-11T20:26:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/\"},\"wordCount\":430,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"elf\",\"reverse\",\"reverse-engineering\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/\",\"name\":\"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-10-11T20:26:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed] - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed] - JassWeb","og_description":"[ad_1] How to extract all functions out of a compiled elf file,even the function has no symbol You don&#8217;t define what is a function for you (and you really should). Notice that if the compiler has inlined a function, it does not appear in the ELF file, even if of course it exists in the ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/","og_site_name":"JassWeb","article_published_time":"2022-10-11T20:26:49+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed]","datePublished":"2022-10-11T20:26:49+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/"},"wordCount":430,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","elf","reverse","reverse-engineering"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/","name":"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-11T20:26:49+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-extract-all-functions-out-of-a-compiled-elf-fileeven-the-function-has-no-symbol-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] How to extract all functions out of a compiled elf file,even the function has no symbol [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/15547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=15547"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/15547\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=15547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=15547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=15547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}