Пожалуйста, обратите внимание, что пользователь заблокирован
Всем привет. Пишу один проект. Не очень понимаю, почему в моём старом проекте данный код для патчинга хорошо работает, а в новом отказывается делать Replace.
Реплайс переменных через cecil
После патчинга, я пишу стаб на диск вот так
Изначально думал, что накосячил именно со стабом криптера.
Решил написать Console.WrLine и пропатчить тем самым куском кода, что выше.
После патчинга, кидаю в dnspy и вижу, что ничего не заменилось.
Реплайс переменных через 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";
}
}
}
}
}
}
}
Решил написать Console.WrLine и пропатчить тем самым куском кода, что выше.
C#:
using System;
namespace Stub
{
internal static class Program
{
[STAThread]
private static void Main()
{
Console.WriteLine("[Msg]");
}
}
}