[{"data":1,"prerenderedAt":386},["ShallowReactive",2],{"project-45492489":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":5,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":42,"post_text":44,"what":45,"said":69,"maker_in_thread":198,"shape":205,"grid":210,"attempts":348,"same_week":349,"maker_shows":33,"maker_hidden":379,"reader_version":380,"card":381},"45492489","nullpt.rs","I'm building a browser for reverse engineers","title","Show HN: I'm building a browser for reverse engineers","https:\u002F\u002Fnullpt.rs\u002Freverse-engineering-browser","nullpt_rs",1759764752,2025,348,55,140,3837,4,"legend","security_privacy","reverse engineering browser","desktop_app",[23,24,25,26,27],"reverse engineering","browser instrumentation","javascript hooking","chromium","browser fingerprinting","loved",0.37,{"positive":31,"neutral":32,"mixed":33,"critical":34},11,8,1,2,22,{"idea":37,"execution":39,"privacy":41},{"positive":38,"critical":34},5,{"positive":40,"critical":40},0,{"positive":33,"critical":40},[43,40,38,40,40,40,40,38,43,40,38,38,43,33,40,40,40,40,40,40,40,40,40,38,38,33,38,38,43,43,43,40,40,43,43,40,38,40,40,40],3,null,{"problem":46,"audience":52,"pricing":44,"motivation":56,"time_to_build":44,"stack":62,"openness":67,"stage":68,"team_size":67},{"value":47,"source":48,"evidence":49},"Reverse engineering what web pages run in the browser","maker",[50],{"id":51},"post",{"value":53,"source":48,"evidence":54},"Reverse engineers",[55],{"id":51},{"value":57,"source":48,"evidence":58},"Learning browser internals and building a tool for inspecting site scripts",[59],{"id":60,"by":10,"text":61},"45508709","Someone mentioned this as well in another comment. Turns out most of this could’ve been done as an extension after all :-) edit: actually, wouldn’t you still need to override the…",[63],{"value":64,"source":48,"evidence":65},"Chromium",[66],{"id":60,"by":10,"text":61},"unknown","prototype",{"praise":70,"objections":105,"requests":124,"questions":153,"alternatives":171},[71,83,94],{"value":72,"source":73,"evidence":74},"Interesting, eye-opening project","commenter",[75,79],{"id":76,"by":77,"text":78},"45510382","3abiton","This is such an eye opening, and really interesting. It reminded me of projects like XprivacyLua that \"expose\" the different calls and request from android apps. Great work!",{"id":80,"by":81,"text":82},"45509069","kundi","Interesting tool. Would love to contribute",{"value":84,"source":73,"evidence":85},"Useful for reverse engineering work",[86,90],{"id":87,"by":88,"text":89},"45507181","coolelectronics","could be very useful for my work, nice to see",{"id":91,"by":92,"text":93},"45506949","leptons","Most of my job is reverse engineering a major website builder company's code so we can leverage their undocumented features. It's often a difficult job but your project could…",{"value":95,"source":73,"evidence":96},"Impressive Chromium work",[97,101],{"id":98,"by":99,"text":100},"45516219","bobajeff","I am amazed what you've accomplished here: adding your own custom CDP domain. Years ago I gave up on trying to hack Chromium (I wanted to learn how to add back Manifest Version 2…",{"id":102,"by":103,"text":104},"45512678","sagistrauss","Nice work! Check out visible v8: https:\u002F\u002Fgithub.com\u002Fwspr-ncsu\u002Fvisiblev8 for inspiration on using the V8 debug logs.",[106,113],{"value":107,"source":73,"evidence":108},"Use case looks like bot evasion",[109],{"id":110,"by":111,"text":112},"45510404","paulhodge","Neat investigation but I didn’t totally follow how the project would be useful for reverse engineering, it seems like a project that would mostly be useful for evading bot checks…",{"value":114,"source":73,"evidence":115},"Proxy-based hooks can be detected",[116,120],{"id":117,"by":118,"text":119},"45508426","Matheus28","You can just use Proxy to get around toString shenanigans and prevent any detection whatsoever.",{"id":121,"by":122,"text":123},"45512312","kachapopopow","no you cannot since you can throw an exception and your proxy will be leaked leading to a detection.",[125,132,139,146],{"value":126,"source":73,"evidence":127},"Open source the project",[128],{"id":129,"by":130,"text":131},"45508562","tylerlh","Very cool, thanks for sharing. I would love to see this show up as an OSS project. I know a few people who would likely enjoy being able to contribute if that's something you'd…",{"value":133,"source":73,"evidence":134},"Breakpoints without anti-debugging loops",[135],{"id":136,"by":137,"text":138},"45508945","horseradish7k","feature request: allow setting breakpoints without having obfuscator debugger statement loops get in the way",{"value":140,"source":73,"evidence":141},"Visibility into iframe and BroadcastChannel communication",[142],{"id":143,"by":144,"text":145},"45514203","whazor","I would love to be able to see IFrame and BroadcastChannel communication",{"value":147,"source":73,"evidence":148},"Waitlist",[149],{"id":150,"by":151,"text":152},"45516430","juros","It would be dangerous if this tool fell into the wrong hands. Where's the wait list?",[154,164],{"value":155,"source":73,"evidence":156},"Why a custom browser instead of an extension",[157,161],{"id":158,"by":159,"text":160},"45502756","tducret","Very interesting, thanks! For the fingerprinting part, can you explain the difference with the JShelter browser extension (https:\u002F\u002Fjshelter.org\u002F)? I checked as you did in your…",{"id":162,"by":10,"text":163},"45506292","Ooh nice, I haven’t seen this project! I actually tried attempting this as an extension at first but wasn’t able to override page window functions. I’m curious to know how they…",{"value":165,"source":73,"evidence":166},"What can you achieve with it",[167],{"id":168,"by":169,"text":170},"45541567","codingcodingboy","Sounds interesting, what can you achieve?",[172,176,180,184,191],{"value":173,"source":73,"evidence":174},"JShelter",[175],{"id":158,"by":159,"text":160},{"value":177,"source":73,"evidence":178},"VisibleV8",[179],{"id":102,"by":103,"text":104},{"value":181,"source":73,"evidence":182},"XprivacyLua",[183],{"id":76,"by":77,"text":78},{"value":185,"source":73,"evidence":186},"mitmproxy",[187],{"id":188,"by":189,"text":190},"45517948","debazel","Ha, I've had the exact same thought before as well, but due to lack of experience and time constraints I ended up using mitmproxy with a small Python script instead. It was slow…",{"value":192,"source":73,"evidence":193},"Proxy-based browser extensions",[194],{"id":195,"by":196,"text":197},"45507008","tbrockman","Not to comment on the rest of article or the author's goals, but it's absolutely possible to use a content script (dynamically injected into the `main` world, as opposed to the…",{"comments":38,"answered":34,"key":199},[200,201,202],{"id":162,"text":163},{"id":60,"text":61},{"id":203,"text":204},"45509852","D'oh! You are correct :-) Good catch and thanks for teaching me something!",{"commenters":206,"max_depth":207,"maker_replies":38,"first_comment_mins":208,"lifespan_hours":209},35,7,1311,260,[211,213,215,217,219,223,226,229,232,234,235,237,240,243,244,249,252,256,259,260,262,263,264,266,268,271,274,276,278,280,282,284,285,290,292,294,297,302,304,307,309,311,313,316,319,321,324,327,330,332,334,337,340,343,346],[158,40,43,212,159,40],"project\u002Fneutral\u002Fidea",[162,40,40,214,10,33],"maker\u002Fneutral\u002Fnone",[91,33,38,216,92,40],"project\u002Fpositive\u002Fidea",[168,33,40,218,169,40],"commenter\u002Fneutral\u002Fnone",[220,34,40,221,222,40],"45509644","other\u002Fneutral\u002Fnone","codeulike",[224,34,40,218,225,40],"45509672","dotancohen",[227,34,40,218,228,40],"45514235","egberts1",[230,34,40,221,231,40],"45513506","dlcarrier",[233,34,40,221,222,40],"45513666",[76,43,38,216,77,40],[102,17,38,236,103,40],"project\u002Fpositive\u002Fnone",[238,38,43,212,239,40],"45516446","evertedsphere",[241,38,40,221,242,40],"45517180","dunham",[188,38,38,216,189,40],[245,246,38,247,248,40],"45512503",6,"maker\u002Fpositive\u002Fnone","Alifatisk",[250,207,38,247,251,40],"45512120","MaxLeiter",[253,32,43,254,255,40],"45579725","maker\u002Fneutral\u002Fexecution","izzqz",[117,257,33,258,118,40],9,"project\u002Fcritical\u002Fidea",[60,257,40,212,10,33],[261,257,40,218,88,40],"45509496",[203,257,40,218,10,33],[121,257,40,218,122,40],[265,257,40,218,118,40],"45522359",[267,257,40,218,122,40],"45530174",[269,270,40,221,122,40],"45512326",10,[272,270,40,218,273,40],"45512486","gpvos",[275,270,40,218,122,40],"45512918",[277,270,40,218,273,40],"45520158",[279,270,40,218,122,40],"45530171",[281,270,40,218,273,40],"45581706",[283,270,40,218,122,40],"45615408",[129,31,38,216,130,40],[286,287,40,288,289,40],"45510056",12,"other\u002Fneutral\u002Fprivacy","NetOpWibby",[98,291,38,247,99,40],13,[110,293,33,258,111,40],14,[150,295,43,296,151,40],15,"project\u002Fmixed\u002Fidea",[298,299,38,300,301,40],"45511134",16,"project\u002Fpositive\u002Fprivacy","userbinator",[80,303,38,236,81,40],17,[143,305,43,306,144,40],18,"project\u002Fneutral\u002Fnone",[195,308,43,212,196,40],19,[310,308,40,212,10,33],"45507104",[312,308,43,212,196,40],"45507421",[314,308,40,218,315,40],"45509627","2bird3",[317,308,40,218,318,40],"45511938","webstrand",[320,308,40,218,315,40],"45516093",[322,308,43,212,323,40],"45508285","Retr0id",[325,308,40,218,326,40],"45512427","nenxk",[136,328,43,329,137,40],20,"project\u002Fneutral\u002Fexecution",[331,328,40,214,10,33],"45510354",[87,333,38,216,88,40],21,[335,35,40,221,336,40],"45538786","fjfjf",[338,339,40,221,336,40],"45538781",23,[341,342,40,221,336,40],"45538798",24,[344,345,40,221,336,40],"45538800",25,[347,345,40,218,336,40],"45538803",[],[350,355,359,364,369,374],{"id":351,"name":352,"points":353,"category":354},"45504973","Timelinize",630,"productivity",{"id":356,"name":357,"points":358,"category":354},"45490578","Write It Down",271,{"id":360,"name":361,"points":362,"category":363},"45491609","Kent Dybvig's Scheme Machine (heap-lisp)",226,"languages",{"id":365,"name":366,"points":367,"category":368},"45515978","telefonefix",222,"hardware",{"id":370,"name":371,"points":372,"category":373},"45516584","Recall",171,"ai",{"id":375,"name":376,"points":377,"category":378},"45483531","ut",170,"dev_tools",false,"v2",{"id":382,"name":5,"line":6,"ai":379,"cat":19,"year":12,"points":13,"comments":14,"rec":28,"s":29,"top":17,"kw":383,"maker":10,"domain":5,"tier":18,"attempts":40,"strip":384,"url":9,"mix":385,"praise":72,"objection":107,"sub":20},45492489,[23,24,25,26,27],"3050000530553100000000055155333003305000",[31,32,33,34],1794036683724]