From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 1108a1,12f4d07c572005e3 X-Google-Attributes: gid1108a1,public X-Google-Thread: f43e6,12f4d07c572005e3 X-Google-Attributes: gidf43e6,public X-Google-Thread: ff6c8,12f4d07c572005e3 X-Google-Attributes: gidff6c8,public X-Google-Thread: 103376,12f4d07c572005e3 X-Google-Attributes: gid103376,public X-Google-Thread: 10db24,12f4d07c572005e3 X-Google-Attributes: gid10db24,public From: Mike Young Subject: Re: Ada News Brief - 96-05-24.txt [1/1] Date: 1996/06/01 Message-ID: <31B0BD25.188F@mcs.com>#1/1 X-Deja-AN: 157966724 references: <4o56db$p66@ns1.sw-eng.falls-church.va.us> content-type: text/plain; charset=us-ascii organization: Fen Software, Inc. mime-version: 1.0 newsgroups: comp.lang.ada,comp.sw.components,comp.object,comp.software-eng,comp.edu x-mailer: Mozilla 2.01Gold (Win95; I) Date: 1996-06-01T00:00:00+00:00 List-Id: JBC is *very* easily decompiled. All class member names are directly accessible in the class file, as are all classes and symbols referenced from that class. These names are exposed to support Java's run-time binding; a moment's reflection makes it very clear that this cannnot be otherwise. You don't have to take my word on this; the details are in the Java Virtual Machine spec, particularly section 2, the class file format. It was less than a week's effort to extract use, dependency, and structure graphs from Java class files. The only information not directly available are local variable names. Mike. ============= Robert Dewar wrote: > > I find the claim that JBC is easier to reverse engineer than machine > code unsupportable from a technical point of view. JBC is just machine > code for a virtual machine. It is true this is a higher level machine > code, which makes a difference, but that difference can be in either > direction. Sometimes the encoding of stuff at a high level can be > harder to disentangle. For example, access types in an Ada source > program get translated to Java classes. Is it really true that this > makes algorithms that at a conceptual level use pointers easier to > understand by reverse engineering -- I think not. > > At least it is now clear what Richard is concerned with (the mention of > reverse engineering was not in his original note), but it is also pretty > clear that this his opinion is borrowed from others rather than based on > technical analysis, and I suspect that the opinion, as stated in the trade > press, may also be based on a general theory that interpretors are easier > to reverse engineer. > > I am unconvinced, though to be fair, you really would have to try doing > some reverse engineering to be sure. I think what you would find out is > that some programs are far easier than others to reverse engineer, and > these fundamental differences (having to do with how involved the > algorithms are, and how extensively the code is optimized, etc.) will > be much more significant than any minor difference caused by different > machine models. > > Finally, it is important to emphasize that this has *nothing at all* to > do with the Java language, but rather with the specific delivery methods, > i.e Richard's comments about reverse engineering apply to Ada or any > other language converted to JBC, and do not apply to Java programs that > are compiled into hard machine code. -- ----------------------------------------------------------------- Michael Young, Technologist Phone: (312)587-2329 Ext 3041 Strategic Technology Resources Fax: (312)266-9161 Chicago, IL 60610 mailto:mikey@str.com