[{"data":1,"prerenderedAt":294},["ShallowReactive",2],{"project-41318133":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":41,"post_text":43,"what":44,"said":85,"maker_in_thread":149,"shape":161,"grid":165,"attempts":254,"same_week":259,"maker_shows":35,"maker_hidden":286,"reader_version":287,"card":288},"41318133","ghidra-delinker-extension","A Ghidra extension for exporting parts of a program as object files","title","Show HN: A Ghidra extension for exporting parts of a program as object files","https:\u002F\u002Fgithub.com\u002Fboricj\u002Fghidra-delinker-extension","github.com","boricj",1724316884,2024,304,36,201,3515,6,"legend","dev_tools","reverse engineering tool","desktop_app",[24,25,26,27,28],"ghidra","delinking","object files","reverse engineering","decompilation","curious",0.333,{"positive":32,"neutral":33,"mixed":34,"critical":35},5,7,0,1,13,{"idea":38,"docs":39,"execution":40},{"positive":32,"critical":34},{"positive":34,"critical":34},{"positive":34,"critical":35},[32,34,42,34,42,34,42,34,42,34,32,32,42,34,34,34,34,34,42,34,35,34,42,34,34,34,34,34,34,32,34,32,34,34,34,34],3,"This Ghidra extension unrelocates machine code through analysis and then synthesizes a working object file from a listing selection. It effectively turns computer programs into Lego bricks, to be torn down into pieces and reused into something new.\n\nIt supports the COFF and ELF object file formats, for the x86 and MIPS architectures. It has been successfully used on Linux, Windows and PlayStation executables. One user report is on a commercial video game from 2009 with a ~7 MiB Windows executable written in C++: it was delinked without its C runtime library and then relinked into a new executa",{"problem":45,"audience":51,"pricing":64,"motivation":65,"time_to_build":69,"stack":73,"openness":82,"stage":83,"team_size":84},{"value":46,"source":47,"evidence":48},"Turning a linked executable back into relocatable object files so parts can be reused or relinked","maker",[49],{"id":50},"post",{"value":52,"source":53,"evidence":54},"Reverse engineers and decompilation or modding projects","inferred",[55,56,60],{"id":50},{"id":57,"by":58,"text":59},"41321053","jchw","Oh, great to see this here. I think this is an extremely cool project, and I helped to add MS COFF support. (P.S.: I will note that my initial PR was notably worse than the ELF…",{"id":61,"by":62,"text":63},"41322289","pinum","This looks fantastic and is relevant to some game modding ideas I've had. I love your blog series about decompiling Tenchu too. Thank you for releasing this stuff!",null,{"value":66,"source":47,"evidence":67},"Built as part of a video game decompilation project",[68],{"id":50},{"value":70,"source":47,"evidence":71},"2.5 years of work",[72],{"id":50},[74,78],{"value":75,"source":47,"evidence":76},"Ghidra",[77],{"id":50},{"value":79,"source":53,"evidence":80},"Java",[81],{"id":57,"by":58,"text":59},"unknown","launched","solo",{"praise":86,"objections":105,"requests":112,"questions":120,"alternatives":135},[87,97],{"value":88,"source":89,"evidence":90},"Cool, interesting project","commenter",[91,92,93],{"id":57,"by":58,"text":59},{"id":61,"by":62,"text":63},{"id":94,"by":95,"text":96},"41322806","jcul","This looks really cool. I don't have a real use for it in my current work but in a past life it would have been so useful. Hopefully I'll have some time \u002F opportunity to try it…",{"value":98,"source":89,"evidence":99},"Useful for game modding and decompilation",[100,104],{"id":101,"by":102,"text":103},"41321926","jxjx","This sounds very interesting. And is tempting me to delve back into a game reverse engineering project I abandoned a few years back. Do you have a fully worked example of how to…",{"id":61,"by":62,"text":63},[106],{"value":107,"source":47,"evidence":108},"Results depend on an accurate Ghidra database and can cause subtle bugs",[109],{"id":110,"by":11,"text":111},"41322090","> So is this a completely fool-proof process? That's... complicated to answer. My analyzers rely on an accurate Ghidra database, at least for the parts you want to export. While…",[113],{"value":114,"source":89,"evidence":115},"End-to-end tutorial walkthrough",[116,117],{"id":101,"by":102,"text":103},{"id":118,"by":11,"text":119},"41324042","> Will this also work without painstakingly reversing things in the binary, say in the case of a giant game executable? You can get away with a Ghidra database that isn't…",[121,128],{"value":122,"source":89,"evidence":123},"How much work is needed to pick sections to export from a large binary",[124],{"id":125,"by":126,"text":127},"41322141","hmfrh","How much work is it to figure out which sections of the executable to export? Would it be realistic to be able to export a modern-ish (2008-2015) Win32 game into objects and then…",{"value":129,"source":89,"evidence":130},"Whether the process is guaranteed to succeed",[131],{"id":132,"by":133,"text":134},"41321786","almostgotcaught","So is this a completely fool-proof process? Ie i'm asking if it's guaranteed to succeed or if the analysis is conservative. Ie if some piece\u002Fdatum\u002Ffeature is missing in the ELF…",[136,143],{"value":137,"source":89,"evidence":138},"objcopy",[139],{"id":140,"by":141,"text":142},"41320751","bigdict","See also: objcopy. https:\u002F\u002Fsourceware.org\u002Fbinutils\u002Fdocs\u002Fbinutils\u002Fobjcopy.html",{"value":144,"source":47,"evidence":145},"wcc, unlinkerida, delinker",[146],{"id":147,"by":11,"text":148},"41321384","While objcopy can do many things, it can't undo the work of the linker. If relocations aren't unapplied and a new relocation table generated, these spots inside the new object…",{"comments":150,"answered":18,"key":151},12,[152,155,158],{"id":153,"text":154},"41321787","> I'm actually a pretty big n00b when it comes to Ghidra and haven't even really figured out a good way to select the ranges for delinking from a large binary. One way to keep…",{"id":156,"text":157},"41322755","There are links to various case studies on my blog inside the README of the repository. https:\u002F\u002Fgithub.com\u002Fboricj\u002Fghidra-delinker-extension\u002Fblob\u002Fmaster\u002FREADME.md",{"id":159,"text":160},"41322702","> How much work is it to figure out which sections of the executable to export? As long as you do not cut across a variable or a function, you can export pretty much however you…",{"commenters":162,"max_depth":18,"maker_replies":150,"first_comment_mins":163,"lifespan_hours":164},19,340,31,[166,168,170,172,173,176,177,179,181,183,185,188,192,195,199,202,206,208,210,211,213,217,220,223,225,228,230,233,236,239,240,242,244,247,251,253],[57,34,32,167,58,34],"project\u002Fpositive\u002Fidea",[153,34,34,169,11,35],"maker\u002Fneutral\u002Fnone",[101,35,42,171,102,34],"maker\u002Fneutral\u002Fdocs",[156,35,34,171,11,35],[125,174,42,175,126,34],2,"project\u002Fneutral\u002Fexecution",[159,174,34,175,11,35],[178,174,42,171,126,34],"41322907",[180,174,34,171,11,35],"41323404",[182,174,42,171,126,34],"41323637",[118,174,34,184,11,35],"maker\u002Fneutral\u002Fexecution",[186,42,32,167,187,34],"41328691","luke-stanley",[189,190,32,167,191,34],"41321976",4,"sweeter",[193,190,42,194,58,34],"41322519","project\u002Fneutral\u002Fidea",[196,190,34,197,198,34],"41322978","commenter\u002Fneutral\u002Fnone","fngjdflmdflg",[200,190,34,201,11,35],"41323492","commenter\u002Fneutral\u002Fidea",[203,190,34,204,205,34],"41327379","other\u002Fneutral\u002Fnone","skissane",[207,190,34,204,58,34],"41329002",[209,190,34,194,11,35],"41322844",[132,32,42,175,133,34],[110,32,34,212,11,35],"project\u002Fmixed\u002Fexecution",[214,32,35,215,216,34],"41322917","project\u002Fcritical\u002Fexecution","archgoon",[218,32,34,219,11,35],"41323283","commenter\u002Fneutral\u002Fexecution",[221,18,42,194,222,34],"41321211","mhh__",[224,18,34,204,58,34],"41321290",[226,18,34,204,227,34],"41321431","dvdkon",[229,18,34,204,222,34],"41322513",[231,18,34,232,11,35],"41321468","maker\u002Fneutral\u002Fidea",[234,18,34,204,235,34],"41321807","chc4",[237,18,34,204,238,34],"41322371","debatem1",[61,33,32,167,62,34],[241,33,34,169,11,35],"41322983",[94,243,32,167,95,34],8,[245,243,34,197,246,34],"41329920","egberts1",[248,249,34,204,250,34],"41321117",9,"toomuchtodo",[140,252,34,204,141,34],10,[147,252,34,175,11,35],[255,258],{"id":256,"t":257,"points":33,"comments":190},"38852362",1704276013,{"id":4,"t":12,"points":14,"comments":15},[260,265,269,274,278,282],{"id":261,"name":262,"points":263,"category":264},"41322281","InstantDB",1145,"data",{"id":266,"name":267,"points":268,"category":20},"41384144","Skip",322,{"id":270,"name":271,"points":272,"category":273},"41358490","Remove-bg",286,"ai",{"id":275,"name":276,"points":277,"category":20},"41377960","IPA",270,{"id":279,"name":280,"points":281,"category":264},"41339308","ChartDB",227,{"id":283,"name":284,"points":285,"category":20},"41317988","Isaiah",196,false,"v2",{"id":289,"name":5,"line":6,"ai":286,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":290,"top":18,"kw":291,"maker":11,"domain":10,"tier":19,"attempts":174,"strip":292,"url":9,"mix":293,"praise":88,"objection":107,"sub":21},41318133,0.33,[24,25,26,27,28],"503030303055300000301030000005050000",[32,33,34,35],1793991098497]