/// <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(); }
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); }
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); } }