<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: musjleman</title><link>https://news.ycombinator.com/user?id=musjleman</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 25 Jun 2026 10:52:40 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=musjleman" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by musjleman in "[dead]"]]></title><description><![CDATA[
<p>Why is this AI slop here? The "author" deleted his twitter account and added the disclaimer at the top of this post that it's all written by AI and he's not an actual "programmer or reverse engineer".<p>The fact that nonsense like this gets likes amazes me. You take an emulator, you know a thing whose entire purpose is to evaluate instructions without actually executing them, "bypass" something with overcomplicated and unnecessary hardware breakpoints usage (what exactly is the point of not just catching the access violation instead? Or why do you need to cause an exception at all to emulate the instructions?) and release it with some awful POC that's also AI generated.</p>
]]></description><pubDate>Tue, 21 Oct 2025 18:09:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45659370</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=45659370</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45659370</guid></item><item><title><![CDATA[New comment by musjleman in "[dead]"]]></title><description><![CDATA[
<p>An interpreter for a machine language is usually just called an emulator.</p>
]]></description><pubDate>Tue, 21 Oct 2025 18:03:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=45659265</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=45659265</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45659265</guid></item><item><title><![CDATA[New comment by musjleman in "NT OS Kernel Information Disclosure Vulnerability"]]></title><description><![CDATA[
<p>I'm pretty sure it's just a small mistake in the article on the exact syscall used to query the token information.<p>Checked a kernel from November 2024 vs a current one and from I can tell, this used to be the actual mechanism the exploit worked:<p><pre><code>  Thread #1 looping
    NtQueryInformationToken(TokenAccessInformation, InfoBuffer);
  
  Thread #2 looping
    Ptr = *(InfoBuffer + SidHashOffset);
    if (IsValidCanonicalKernelPtr(Ptr))
      done</code></pre></p>
]]></description><pubDate>Fri, 12 Sep 2025 07:16:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45219516</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=45219516</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45219516</guid></item><item><title><![CDATA[New comment by musjleman in "Without the futex, it's futile"]]></title><description><![CDATA[
<p>SRW lock uses the WaitOnAddress primitives nowadays, not keyed events.</p>
]]></description><pubDate>Tue, 19 Aug 2025 17:19:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=44953909</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=44953909</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44953909</guid></item><item><title><![CDATA[New comment by musjleman in "Denuvo Analysis"]]></title><description><![CDATA[
<p>Yes and no.<p>The GTA SA bug was reading of an uninitialized variable. The value it contained was correct simply by chance as it was placed there by the previous invocation of the function and never overwritten by something else intermittently. Any changes to functions that happened to be called in between these 2 could have changed the value of the stack memory.<p>The aforementioned check on the other hand is placing random value below the stack pointer. This means that by design it cannot call any external/os/game functions and is basically isolated/"pure" from any interactions with third party code.</p>
]]></description><pubDate>Wed, 11 Jun 2025 12:33:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44246946</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=44246946</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44246946</guid></item><item><title><![CDATA[New comment by musjleman in "Denuvo Analysis"]]></title><description><![CDATA[
<p>> The anti-tamper codes, if any tampering is detected will crash on undefined/unallocated regions.<p>That's basically the whole point of any anti-tamper product. I just think you picked a terrible example of a feature that could break due to OS changes specifically.<p>> Meaning that if Windows ever were to overwrite that region for whatever reason, will trigger the crash.<p>We're talking about random stack memory inside of a virtual machine that likely doesn't call any external code whatsoever. There should be no real way for Microsoft to accidentally corrupt this memory.</p>
]]></description><pubDate>Tue, 10 Jun 2025 23:24:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=44242600</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=44242600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44242600</guid></item><item><title><![CDATA[New comment by musjleman in "Denuvo Analysis"]]></title><description><![CDATA[
<p>> As Windows matures, behaviour can change, breaking certain stuff.<p>How do you expect the aforementioned tech to break the games it's on? If anything it "breaking" will just make the anti-tamper feature ineffective.</p>
]]></description><pubDate>Tue, 10 Jun 2025 16:54:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=44238961</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=44238961</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44238961</guid></item><item><title><![CDATA[New comment by musjleman in "I ruined my vacation by reverse engineering WSC"]]></title><description><![CDATA[
<p>> If people have enabled that setting, or left that default on, then that's their problem; it's not Windows Defender's fault.<p>There is no such setting for Defender. The file scanning is either on or defender is completely off. To even access some of the better stuff like ASR rules (that are disabled by default) you need third-party software or pay for their enterprise offering.<p>Consumer Defender literally has like 4 toggles in total. It's a dumbed down and extremely permissive AV because it runs on every Windows machine.</p>
]]></description><pubDate>Tue, 13 May 2025 16:56:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=43975056</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=43975056</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43975056</guid></item><item><title><![CDATA[New comment by musjleman in "I ruined my vacation by reverse engineering WSC"]]></title><description><![CDATA[
<p>> Let’s cut the bullshit, Defender is basically unchanged as a concept since Windows Vista or maybe even Windows XP. It runs completely fine on 15 year old hardware.<p>Exactly. It's the same legacy <i>scan every fucking thing you open</i> AV architecture.<p>Back in the day of spinning disks it probably wouldn't have been too noticeable for the AV to marshal scanning to its usermode service and the filesystem to pull the data from cache for the original request afterwards. However now that we have 10GB/s+ capable SSDs the factor of slowdown is exponentially larger.<p>I can run ripgrep on a massive directory, make myself a cup of tea and return to it still searching for matches versus being done in < 10 seconds with defender disabled.</p>
]]></description><pubDate>Mon, 12 May 2025 17:27:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=43965427</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=43965427</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43965427</guid></item><item><title><![CDATA[New comment by musjleman in "I built a native Windows Todo app in pure C (278 KB, no frameworks)"]]></title><description><![CDATA[
<p>By "actual code" I meant the assembly that the application logic compiles down to, not the entire executable. But as far as the entire package goes, compiling it using clang with some flags I can get down to 19.5k without any effort. If I wanted to waste time on this, ripping out the CRT entirely and getting it to 16k would probably take less than an hour.</p>
]]></description><pubDate>Mon, 12 May 2025 04:26:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=43959645</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=43959645</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43959645</guid></item><item><title><![CDATA[New comment by musjleman in "I built a native Windows Todo app in pure C (278 KB, no frameworks)"]]></title><description><![CDATA[
<p>> those global variables...<p>What about them? In a 500 loc app there is no practical difference and there's only ~20 of them with clear purpose.<p>> Use std::string <...> or std::list <...> remove all the malloc, etc<p>> still compile to the same assembly language without the bugs.<p>I see you have no clue what those things actually compile down to.</p>
]]></description><pubDate>Sun, 11 May 2025 20:10:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=43956740</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=43956740</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43956740</guid></item><item><title><![CDATA[New comment by musjleman in "I built a native Windows Todo app in pure C (278 KB, no frameworks)"]]></title><description><![CDATA[
<p>The actual code in the repo definitely compiles to less than 10k. The rest is bloat from linking CRT statically.</p>
]]></description><pubDate>Sun, 11 May 2025 20:05:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=43956697</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=43956697</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43956697</guid></item><item><title><![CDATA[New comment by musjleman in "Technical Analysis – Improper Use of Private iOS APIs in Vietnamese Banking Apps"]]></title><description><![CDATA[
<p>> Are they able to load a .so/dylib file during runtime and just call a method on it as long as they know the name of the method?<p>Yes, usually that's the entire point of an .so/.dylib/.dll - to load it and call it's functions by name?<p>> How does iOS even allow that? How does an iOS even get to load those files? Seems like that would be locked down.<p>Because it's something that higher level apple interfaces might rely on. It's not a security issue in the first place - if you submit an app obviously using them the message you get is:<p>> The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.</p>
]]></description><pubDate>Mon, 31 Mar 2025 17:34:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=43537564</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=43537564</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43537564</guid></item><item><title><![CDATA[New comment by musjleman in "Technical Analysis – Improper Use of Private iOS APIs in Vietnamese Banking Apps"]]></title><description><![CDATA[
<p>Showing a 5000$ bounty example of "enumerating all apps" sounds a bit disingenuous when this is more of a "check if this exact app by bundle name was installed not through store.<p>I also don't think that this deserves to be called anything as scary as an "zero day exploit", "sandbox escape".</p>
]]></description><pubDate>Mon, 31 Mar 2025 17:23:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=43537447</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=43537447</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43537447</guid></item><item><title><![CDATA[New comment by musjleman in "Go-msquic: A new QUIC/HTTP3 library for Go"]]></title><description><![CDATA[
<p>> Also, it would be silly to bottleneck your protocol implementation benchmark on encryption that would be shared amongst implementations because that does not highlight your overhead advantages<p>It would be great if benchmarks with no encryption were a thing.<p>There's massive overheads, and I explicitly avoided saying whether it's "fast" or not because to a lot of people serving 1000req/s seems "fast" and TLS is basically the main algorithmic complexity you'd expect from a data transfer protocol.</p>
]]></description><pubDate>Wed, 19 Feb 2025 22:28:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=43108566</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=43108566</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43108566</guid></item><item><title><![CDATA[New comment by musjleman in "Go-msquic: A new QUIC/HTTP3 library for Go"]]></title><description><![CDATA[
<p>> what is presumably a single core<p>I would guess that it's not a single core benchmark and that's the speed of the overall multi-threaded system.<p>> Is that considered fast?<p>You can squeeze out around 5GB/s/core with current fastest standard tls1.3 algorithm (AES128GCM). 10+GB/s is possible with aegis variants that are somewhat popular as an extension to TLS libs.</p>
]]></description><pubDate>Wed, 19 Feb 2025 16:47:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=43104227</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=43104227</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43104227</guid></item><item><title><![CDATA[New comment by musjleman in "Proof of concept WMI virus (zero-day)"]]></title><description><![CDATA[
<p>You're missing the fact that there is basically no bug here.<p>All this does is:<p>* Store data in a database.<p>* Kill AV software provided you have admin privileges.<p>The latter might be remediated by MS down the line, but they don't generally give bounties.</p>
]]></description><pubDate>Wed, 29 Jan 2025 19:25:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=42869864</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=42869864</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42869864</guid></item><item><title><![CDATA[New comment by musjleman in "Proof of concept WMI virus (zero-day)"]]></title><description><![CDATA[
<p>Because this has no actual value for anyone and MS would (did?) ignore him.</p>
]]></description><pubDate>Wed, 29 Jan 2025 17:50:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=42868477</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=42868477</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42868477</guid></item><item><title><![CDATA[New comment by musjleman in "Debugging memory corruption: who the hell writes "2" into my stack? (2016)"]]></title><description><![CDATA[
<p>There is nothing inherently wrong with throwing an exception from an APC. Windows supports it and will unwind the stack correctly. If you wrote all the code absolutely nothing will go wrong.<p>The issue is more about the actual code that calls alertable waits not expecting exceptions that will unwind which will most likely be all of winapi code because in it exception == crash.</p>
]]></description><pubDate>Tue, 31 Dec 2024 23:36:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=42562685</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=42562685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42562685</guid></item><item><title><![CDATA[New comment by musjleman in "Debugging memory corruption: who the hell writes "2" into my stack? (2016)"]]></title><description><![CDATA[
<p>> WDYM? The root cause is "you passed ownership to stack-based memory to the kernel and didn't ensure it's valid when it called you back", why would "consent of lower frames" matter here?<p>There is no "called back" in this case. The APC was executed by the sleep and corrupted the stack by unwinding across the C winsock code without any cleanup. It never returned.<p>The user-mode enters an "alertable" wait which allows an asynchronous procedure (APC) to interrupt it and execute code. Instead of returning the APC causes an exception, unwinds the stack across the APC delivery and ends up executing some random code instead of returning to the winapi code that called wait(alertable: true) in a loop. So the code that was supposed to be synchronous because of while(!completed) wait(); suddenly is broken out of the loop without actually being completed.<p>> Exceptions (where lower frames matter) hid the control flow here, but that's one way to reach this situation (early return is another way, as shown by Raymond Chen's post).<p>This isn't just hiding the control flow here. It's control flow that shouldn't have existed in the first place. It walks across the boundary of the windows APC dispatcher. Unity folks needed to go out of their way to make this "work" in the first place because using c++ exceptions and standard library threads this wouldn't work.</p>
]]></description><pubDate>Tue, 31 Dec 2024 23:27:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=42562643</link><dc:creator>musjleman</dc:creator><comments>https://news.ycombinator.com/item?id=42562643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42562643</guid></item></channel></rss>