• XSS.stack #1 – первый литературный журнал от юзеров форума

Mono.Cecil не хочет делать Replace строк ?

McCoder

RAID-массив
Забанен
Регистрация
23.06.2021
Сообщения
62
Реакции
-1
Пожалуйста, обратите внимание, что пользователь заблокирован
Всем привет. Пишу один проект. Не очень понимаю, почему в моём старом проекте данный код для патчинга хорошо работает, а в новом отказывается делать Replace.
Реплайс переменных через cecil
C#:
 AssemblyDefinition assemblyDefinition = AssemblyDefinition.ReadAssembly("Stub.exe");

            foreach (ModuleDefinition moduleDefinition in assemblyDefinition.Modules)
            {

                foreach (TypeDefinition typeDefinition in moduleDefinition.Types)
                {

                    foreach (MethodDefinition methodDefinition in typeDefinition.Methods)
                    {
                        if (methodDefinition.IsConstructor && methodDefinition.HasBody)
                        {

                            IEnumerator<Instruction> enumerator4 = (IEnumerator<Instruction>)methodDefinition.Body.Instructions.GetEnumerator();
                            while (enumerator4.MoveNext())
                            {
                                Instruction instruction = enumerator4.Current;
                                if (instruction.OpCode.Code == Code.Ldstr & instruction.Operand != null)
                                {
                                    string left = instruction.Operand.ToString();

                                    if (Operators.CompareString(left, "[Msg]", false) == 0)
                                    {
                                        instruction.Operand = "Hello";
                                    }
                                }
                            }
                        }
                    }
                }
            }
После патчинга, я пишу стаб на диск вот так
1634566101676.png
Изначально думал, что накосячил именно со стабом криптера.
Решил написать Console.WrLine и пропатчить тем самым куском кода, что выше.
C#:
using System;

namespace Stub
{
    internal static class Program
    {
        [STAThread]
        private static void Main()
        {
            Console.WriteLine("[Msg]");
        }
    }
}
После патчинга, кидаю в dnspy и вижу, что ничего не заменилось.
1634566449647.png
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Без понятия, чего там в Mono.Cecil, мне кажется dnlib куда удобнее. Но за каким хером тебе понадобилось в C# сравнивать строки через Operators.CompareString? Это же VB.NET'овская интринсика. В первую очередь я бы проверил, что сравнение строк у тебя проходит нормально через... это.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Без понятия, чего там в Mono.Cecil, мне кажется dnlib куда удобнее. Но за каким хером тебе понадобилось в C# сравнивать строки через Operators.CompareString? Это же VB.NET'овская интринсика. В первую очередь я бы проверил, что сравнение строк у тебя проходит нормально через... это.
так тоже не хочет патчится
1634569270279.png
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Может дело в том, что в старом проекте была где-то строка "Hello", а в новом её нет вообще?
нет. Это другой проект в том плане, что и другой стаб
 
Я с Mono.Cecil не работал, поэтому рассуждения чисто теоретические: нужно же вызвать какой-то метод типа Compile, чтобы в стабе появилась новая константа в виде строки "Hello".
 
Пожалуйста, обратите внимание, что пользователь заблокирован
тоже не хочет патчится
Я тебе сказал проверить, что у тебя код вообще в это условие заходит. Я там у тебя вижу один амперсанд вместо двух в первом условии, вообще хз, как это скомпилилось? Над булями определен оператор "&"? Или оператор "&" имеет больший приоритет, чем оператор "=="?
 
Всем привет. Пишу один проект. Не очень понимаю, почему в моём старом проекте данный код для патчинга хорошо работает, а в новом отказывается делать Replace.
Реплайс переменных через cecil
Посмотри из этой темы, всё куда проще https://xss.pro/threads/53367/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх