Example #1
0
        /// <summary>
        /// Feeds the bytes into the StringGather.
        /// </summary>
        public void FeedBytes(byte[] data, int offset, int length, int leadingBytes,
                              ReverseMode revMode)
        {
            int startOffset  = offset;
            int strEndOffset = offset + length;

            // Write leading bytes.  This is used for the 8- or 16-bit length (when no
            // appropriate pseudo-op is available), because we want to output that as hex
            // even if it maps to a printable character.
            while (leadingBytes-- > 0)
            {
                WriteByte(data[offset++]);
            }
            if (revMode == ReverseMode.LineReverse)
            {
                // Max per line is line length minus the two delimiters.  We don't allow
                // any hex quoting in reversed text, so this always works.  (If somebody
                // does try to reverse text with delimiters or unprintable chars, we'll
                // blow out the line limit, but for a cross-assembler that should be purely
                // cosmetic.)
                int maxPerLine    = mMaxOperandLen - 2;
                int numBlockLines = (length + maxPerLine - 1) / maxPerLine;

                for (int chunk = 0; chunk < numBlockLines; chunk++)
                {
                    int chunkOffset = startOffset + chunk * maxPerLine;
                    int endOffset   = chunkOffset + maxPerLine;
                    if (endOffset > strEndOffset)
                    {
                        endOffset = strEndOffset;
                    }
                    for (int off = endOffset - 1; off >= chunkOffset; off--)
                    {
                        WriteChar(data[off]);
                    }
                }
            }
            else if (revMode == ReverseMode.FullReverse)
            {
                for (; offset < strEndOffset; offset++)
                {
                    int posn = startOffset + (strEndOffset - offset) - 1;
                    WriteChar(data[posn]);
                }
            }
            else
            {
                Debug.Assert(revMode == ReverseMode.Forward);
                for (; offset < strEndOffset; offset++)
                {
                    WriteChar(data[offset]);
                }
            }

            Finish();
        }
Example #2
0
        public void SetContextValues(ReversePaymentContext reverseContext)
        {
            string      trID            = edt_ReverseID.Text;
            ReverseMode mode            = rb_Cancel.Checked ? ReverseMode.Cancel : ReverseMode.Return;
            decimal?    amountToReverse = string.IsNullOrEmpty(edt_ReverseAmount.Text) ? null : (decimal?)decimal.Parse(edt_ReverseAmount.Text);

            reverseContext.TransactionID   = trID;
            reverseContext.Mode            = mode;
            reverseContext.AmountToReverse = amountToReverse;
        }
        /// <summary>
        /// Creates a new instance of this animation that is the reverse of this instance.
        /// </summary>
        /// <param name="mode">The mode.</param>
        /// <returns>
        /// A new instance of this animation that is the reverse of this instance.
        /// </returns>
        public RadAnimation CreateOpposite(ReverseMode mode)
        {
            RadPlaneProjectionAnimation reverse = base.CreateOpposite() as RadPlaneProjectionAnimation;

            if ((mode & ReverseMode.StartEndAngles) == ReverseMode.StartEndAngles)
            {
                ReverseAngles(reverse);
            }

            if ((mode & ReverseMode.RotationDirection) == ReverseMode.RotationDirection)
            {
                ReverseDirection(reverse);
            }

            return(reverse);
        }
Example #4
0
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("[This is my small Utility for speeding up using Krakatau (https://github.com/Storyyeller/Krakatau) to patch Java-class-files]");

            if (args.Length < 1)
            {
                Console.WriteLine("Usage assembly: JavaReverser.exe --assemble --jar c:\\jarfile.jar --input c:\\disassembled\\org\\path\\test.j");
                Console.WriteLine("Usage disassembly: JavaReverser.exe --jar c:\\jarfile.jar");
            }

            Console.ResetColor();

            string      strJarFile      = null;
            string      strAssemblyFile = null;
            ReverseMode rmode           = ReverseMode.Disassemble;

            string strWorkDir   = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            string strOutputDir = strWorkDir + "\\output";

            string strPython      = @"c:\python27\python.exe";
            string strDisassemble = @"C:\bin\Krakatau-master\disassemble.py";
            string strAssemble    = @"C:\bin\Krakatau-master\assemble.py";

            for (int i = 0; i < args.Length; i++)
            {
                if (args[i] == "--jar") // File to disassemble or assemble
                {
                    strJarFile = args[++i];
                }
                else if (args[i] == "--disassemble")
                {
                    rmode = ReverseMode.Disassemble;
                }
                else if (args[i] == "--assemble")
                {
                    rmode = ReverseMode.Assemble;
                }
                else if (args[i] == "--output")
                {
                    strOutputDir = args[++i];
                }
                else if (args[i] == "--input")
                {
                    strAssemblyFile = args[++i];
                }
                else if (args[i] == "--python")
                {
                    strPython = args[++i];
                }
                else if (args[i] == "--krakatau-disassembler")
                {
                    strDisassemble = args[++i];
                }
                else if (args[i] == "--krakatau-assembler")
                {
                    strAssemble = args[++i];
                }
            }

            Console.WriteLine("[+] Path to " + rmode.ToString() + ":" + strJarFile);

            AppExecute app = new AppExecute();

            Console.WriteLine("[+] Starting to " + rmode.ToString());

            if (rmode == ReverseMode.Assemble)
            {
                Random rnd = new Random();

                string strTempFolderOriginalClasses = Path.GetTempPath() + "krakatauclasses" + rnd.Next().ToString();
                string strTempFolderOutput          = Path.GetTempPath() + "krakatauoutput" + rnd.Next().ToString();
                // python C:\bin\Krakatau-master\assemble.py -out %1 %2

                Console.WriteLine("[+] Assembling...");


                string strArgs    = string.Format("{0} -out {1} {2}", strAssemble, strTempFolderOutput, strAssemblyFile);
                string strOutput2 = app.executeApp(strPython, strArgs, strWorkDir);

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine(strOutput2);
                Console.ResetColor();

                Console.WriteLine("[+] Unpacking original jar to " + strTempFolderOriginalClasses + "...");

                using (FileStream zipToOpen = new FileStream(strJarFile, FileMode.Open))
                {
                    using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
                    {
                        archive.ExtractToDirectory(strTempFolderOriginalClasses);
                    }
                }

                Console.WriteLine("[+] Merging with old JAR-file...");

                copyAll(strTempFolderOutput, strTempFolderOriginalClasses, strTempFolderOutput);


                Console.WriteLine("[+] Compressing to JAR...");

                string strTempFile = Path.GetTempFileName();
                if (File.Exists(strTempFile))
                {
                    File.Delete(strTempFile);
                }

                ZipFile.CreateFromDirectory(strTempFolderOriginalClasses, strTempFile);

                Console.WriteLine("[+] Replacing old JAR...");

                if (File.Exists(strJarFile)) // This will always be true
                {
                    File.Delete(strJarFile);
                }

                File.Move(strTempFile, strJarFile);

                Console.WriteLine("[+] Cleaning up...");
                Directory.Delete(strTempFolderOriginalClasses, true);
                Directory.Delete(strTempFolderOutput, true);
            }
            else
            {
                // python c:\bin\Krakatau-master\disassemble.py -out .\test1 U:\bundle.platform.jar
                string strArgs    = string.Format("{0} -out {1} {2}", strDisassemble, strOutputDir, strJarFile);
                string strOutput2 = app.executeApp(strPython, strArgs, strWorkDir);

                Console.WriteLine(strOutput2);
            }
        }