TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Circumventing the JVM's Bytecode Verifier

83 pointsby half-kh-hackerover 5 years ago

4 comments

nneonneoover 5 years ago
Way back when I was messing with Android reverse engineering, there were already a number of obfuscation&#x2F;protection systems which screwed with Dalvik VM internals. One particularly memorable one had a native library, written using a completely incompatible ARM ABI (using the stack pointer as a normal register, a different register for stack-like operations in the opposite direction, using random registers and stack slots for arguments, etc.), whose only job it was to patch the crap out of the Dalvik VM so it would load their custom obfuscated VM bytecode. The main issue (and the reason this kind of obfuscation seems to have gotten less popular) was that it depended extremely heavily on Dalvik internal structure offsets, and had a massive table of version-specific offsets and patch code which presumably became unmaintainable with all the extant versions of Android.<p>Anyway, it’s fun to look at ways to obfuscate bytecode. It’s far too easy to decompile unobfuscated Java code to pretty much perfect source code these days (same goes for any .NET code) - you really do need a little bit of obfuscation to prevent people from trivially stealing your code.
评论 #21923625 未加载
评论 #21923699 未加载
joshstrangeover 5 years ago
This is a bit over my head and I&#x27;m out of the JVM world now but I found it all very interesting and well written. One small thing I&#x27;d suggest is to change how footnotes are done. I was very confused when I hit the first footnote &quot;1&quot; but there was no title text and it wasn&#x27;t a link so I just scrolled to the bottom of the article and saw &quot;1. Employing this technique seems to work on Windows and Linux...&quot; and I was very confused as that had nothing to do with &quot;three million devices.&quot;. The &quot;1: n = 3,000,000; ...&quot; in the next paragraph didn&#x27;t register when reading through. I thought it might be a &quot;pull quote&quot;-type thing that would be explained below. There are about a million ways to accomplish footnotes so I won&#x27;t try and say which is best but some color difference (both footnote number and then the text for the footnote) might be helpful in making it more obvious and seems like an easy change.<p>Again, great article and I really don&#x27;t meant to nitpick, the footnotes just confused me a little.
peter_d_shermanover 5 years ago
A must-read for anyone implementing security on a language specific VM or runtime environment, in the future...
评论 #21926649 未加载
Izmakiover 5 years ago
You explained the concept like a senior with tens of years of experience. First year at university... dang. Respect.
评论 #21927389 未加载
评论 #21926224 未加载