public static void Main(string[] args) { //byte[] data = File.ReadAllBytes(@"..\..\NOD.class"); //byte[] data = File.ReadAllBytes(@"..\..\SQRT.class"); byte[] data = File.ReadAllBytes(@"..\..\..\javac\NOD.class"); ClassFile cFile = ClassFile.ParseClassFile(data); // TODO: check cFile.AccessFlags MethodInfo methodMain = null; foreach (var m in cFile.Methods) { if (m.AccessFlags != (short)(MethodAccessFlags.ACC_PUBLIC | MethodAccessFlags.ACC_STATIC)) { continue; } var mName = (CONSTANT_Utf8_info)cFile.GetConstant(m.NameIndex).Info; if (!mName.String.Equals(MAIN_NAME)) { continue; } var mSignature = (CONSTANT_Utf8_info)cFile.GetConstant(m.DescriptorIndex).Info; if (!mSignature.String.Equals(MAIN_SIGNATURE)) { continue; } methodMain = m; break; } if (methodMain == null) { throw new Exception("Main method is not found!"); } RunMethod(cFile, methodMain, new int[0]); Console.ReadLine(); }