Как отвязать от железа windows xp. Правильная реализация переноса. Перенос системы на новый HDD

Сегодня я расскажу вам о довольно таки универсальном способе отвязки программ от железа. Единственное условие, без которого ничего не выйдет: У вас должен быть правильный ключ, привязанный к какому-то чужому ID.

Итак, что нам понадобится:

Olly Debugger v2;
CFF Explorer;
File Location Calculator от Manhunter"а; - , чтобы увидеть ссылку.
Статья Manhunter"а о полезных функциях на ASM"е; - , чтобы увидеть ссылку.
Немного мозгов;
Более-менее прямые руки.

Она имеет простенький функционал:

Получить VolumeID диска C:\ через GetVolumeInformation;
Получить сумму байт ID;
Сравнить введенную пользователем сумму, с полученной;
Если все ОК - вывести хорошее сообщение, иначе - плохое.

Конечно, можно было бы просто изменить условие проверки на противоположное, но не всегда все так просто...

Алгоритм действий такой :

Внедрить в EXE-файл чужой ID;
Внедрить процедуру, которая будет копировать внедренный нами ID на место считанного;
Найти место, где программа получает строку ID или ее части;
Вызвать данную процедуру после получения ID;
Ввести ключ от чужого ID и радоваться.

НАЧАЛО

Давайте запустим наше тестовое приложение и осмотримся.

Я попробовал ввести любой ключ и получил "плохое" сообщение. Будем исправлять.

ВНЕДРЕНИЕ

Откроем CFF Explorer и в нем нашу программу. Нам нужен раздел Section Headers.

Нам нужно добавить новую секцию для того, чтобы записать в нее наш ID.

Вводим размер, равный количеству символов в строке + 1 байт на 0x00 байт. Т.е. у меня выходит, что 12 символов с строке ID, и +1 на байт-терминант.

ЗАРАНЕЕ ИЗВЕСТНО, что для чьего-то ID = 123456789020, ключ должен быть: 1388.
Поэтому я в новую секцию вписал нужный идентификатор.

Теперь нужно узнать физический адрес данной секции. Запоминаем его.

Сохраняем изменения в файле. Закрываем CFF Explorer.

Теперь открывает File Location Calculator и в нем нашу лабораторную крыску. Вводим файловое смещение и жмем Calculate.

Получаем значение: 40C000 .

Теперь собственно модификация кода...

Открываем модифицированное приложение в Olly Debugger. Я уже нашел место в коде, где происходит получение строки идентификатора: 40410D. Замечаем, что полученная строка находится по адресу: 148B78:

Сейчас нам нужно внедрить процедуру копирования нашей строки в нужное место и вызвать ее, не испортив остального кода. В , чтобы увидеть ссылку. об инжектировании кода в чужое приложение этот процесс подробно описан. Но я повторю вам основные моменты:

1 Найти место, куда вставить нашу процедуру;
2 Команды, которые будут на месте вызова процедуры перенести в код процедуры.

Ищем место для внедрения процедуры

Найти его довольно таки просто по повторяющимся одинаковым байтам. Обычно такие места можно найти ближе к концу программного кода. Это могут быть либо 0000 , либо CCCC . Но их должно хватать.

Внедряем процедуру

Выделяем как можно больше пустых команд и жмем клавишу Пробел. Поочередно в появившемся окошке вводим команды, согласно первому исходному коду в статье Manhunter"а:

Код
pusha
cld
mov edi,
mov esi,
mov ecx,
push ecx
shr ecx,2
rep movsd
pop ecx
and ecx,3
rep movsb
popa
ret

Получилась такая вот картина (замечаем, что процедура начинается с адреса 40435C):

Вставляем вызов процедуры

Вставлять вызов мы будем по адресу: 40410D . А присваивание указателя на строку в регистр EDX мы допишем в нашу процедуру.
Итак, запоминаем код, который будем менять, выделяем строчку, жмем пробел и пишем:

Теперь переходим в конец процедуры и немного ее модифицируем.

Собственно, модификация закончена.

Сохраняем все изменения в файл, и пробуем его запустить.

ADDENDUM

Получился небольшой облом) Делаем небольшое исправление:

Дело в том, что вместо прямого адреса здесь лучше было указать относительный.

Сохраняем изменения, запускаем файл, проверяем чужой ключ. Модификация окончена!

________________________________________________________________________________
________________________________________________________________

(с) эксплоитЭ.ин

весёлый усач 15 сентября 2013 в 20:58

Универсальный способ переноса ОС Windows 7 на новую платформу

Задача

Описать быстрый и максимально универсальный способ переноса установленной Windows на произвольную аппаратную платформу.

Границы применимости

ОС Windows 7. Теоретически, Windows 8, Server 2008, 2008 R2. 64-битные ОС можно перенести только на 64-битные платформы.

Описание задачи

Большее число пользователей предпочитают переносить диск/образ ОС, а не переустанавливать с потерей всех настроек. Процесс не является тривиальным. Если обновление незначительно, то проблем не возникает. Если обновляется материнская плата, то все зависит от параметров: различие платформ, актуальность релиза ОС, дата выпуска оборудования. Наихудшим вариантом является переход с amd на intel (или с intel на amd), где целевая платформа выпущена позже дистрибутива ОС (и не имеет записей о соответствующих драйверах в установочных настройках). В этом случае, практически при любом способе переноса, гарантирована ошибка 0x0000007B при запуске ОС на новой машине. Данный способ позволяет избежать этой ошибки.Интернет полнится вопросами и бесполезными рецептами. Вот они:
  • Воспользоваться утилитой sysprep - это бесполезно и сильно затягивает процесс.
  • Воспользоваться сторонними утилитами (Acronis True Image, etc...) - это долго и не гарантирует результат.
  • Воспользоваться утилитами botrec и bootsect - в общем случае, проблема не в поиске загрузочных секторов.
  • Убедиться, что на исходной и целевой системе в настройках BIOS установлены одинаковые режимы AHCI
    Controller Mode: Compatible, AHCI Mode: Disabled, SATA Native Mode: Disable
    или
    Controller Mode: Enhanced, AHCI Mode: Enabled, SATA Native Mode: Enabled
  • Убедиться, что в настройках системы установлен Standard AHCI controller
    Пуск - Панель Управления - Система - Диспетчер устройств - Контроллеры IDE/ATAPI

Правильная реализация переноса

Требования:
  1. Дистрибутив Windows, аналогичный установленному
  2. Носитель информации, подходящий для временной установки на него Windows
Процесс
  1. Подключить временный носитель информации к новой платформе и произвести начальную установку Windows на него.
  2. Экспортировать в файл куст реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase
  3. Импортировать файл с кустом реестра на старой машине
  4. Переустановить жесткий диск с Windows со старой на новую машину
Пояснение:
Основной проблемой при запуске Windows на новой платформе становится неспособность Windows идентифицировать правильные драйверы к аппаратным компонентам новой платформы. В нормальном случае, ОС затем смотрит идентификаторы аппаратуры и устанавливает соответствующий стандартный драйвер. Если, в силу многих причин, ОС не имеет информации по драйверам, соответствующим текущим идентификаторам оборудования, то продолжает использовать старые драйверы. Импортируя ключ реестра с соответствующими идентификаторами мы заставляем систему «опознать» наше оборудование и подключить соответствующий драйвер (или стандартный, если драйвер не найден)
Дополнительно:
  • Можно установить новый Windows на тот же самый жесткий диск (только в другую директорию, нежели переносимый дистрибутив), экспортировать куст реестра в файл, загрузить диск на предыдущей машине и импортировать данные в реестр из файла
  • Можно провести всю операцию непосредственно на новой платформе, если использовать ERD Commander (Он же Microsoft DART)
  • Для каждой версии Windows есть соответствующий DART. Вот хорошая . Ссылку на дистрибутив DART можно спокойно нагуглить
  • Если, по какой-то причине, невозможно перенести файл с данными из реестра на жесткий диск, то существует способ встроить его непосредственно в boot.wim DART"а. Для этого следует использовать GImageX

Справочная информация

Работоспособность способа проверена при переносе Windows 7 Ultimate SP1, при переносе c nForce+AMD Athlon64x2 на Intel B75 + Celeron G1610. Ниже приведены ссылки на материалы, использованные при подготовке статьи:

Теги: Windows 7, переустановка ОС, миграция ОС, 0x0000007B

Железо, как известно, может иногда накрываться. Причём сразу медным тазом. Бывает, что этим железом является материнка. Таким образом встаёт в полный рост задача переноса Windows XP на новую материнку. Известно, что в общем случае винда на новой материнке грузиться не будет, из-за того, что на новой материнской плате будет другой дисковый контроллер, а драйверов под него в уже установленной XP не будет. Этот косяк тянется ещё со времён Windows NT, не понимаю, почему его не исправили по сию пору. Можно ведь при загрузке просто проверять, есть нужный дисковый контроллер или нет, и если его нет, то подгружать GENERIC драйвер для IDE-контроллеров, то, что называется в XP «Cтaндapтный двyxкaнaльный кoнтpoллep PCI IDE».

Если есть возможность загрузить винду как-нибудь, то самый простой способ подготовить её к переносу на другую материнку - это в диспетчере устройств вместо дискового контроллера материнки поставить «Cтaндapтный двyxкaнaльный кoнтpoллep PCI IDE». После этого можно завершать работу Windows и менять материнку. После замены и запуска винды на новой матери можно уже поставить правильные драйвера под дисковый контроллер новой материнки.

Хорошо, если есть возможность предугадать замену материнской платы и подготовиться.

А если же такой возможности нет, т. е. мать сгорела начисто, и другой аналогичной нет в наличии, то существует другой рецепт.

Для его реализации потребуется загрузочный LiveCD с какой-нибудь из вариаций Windows. Я пользуюсь BartPE. И reg-файл, который пропишет в реест сведения о стандартном контроллере IDE.

Замечу, что в разные LiveCD включены разные редакторы реестра внешней системы. В сборку BartPE входит Avast! registry editor, «точка монтирования» реестра XP с винта будет зависеть от редактора.

Доставка синих ромашек в Москве (Antananarivo)

Т. е. в прилагаемом файле предполагается, что нужные для правки ключи реестра лежат здесь: HKEY_LOCAL_MACHINE\SYSTEM_ON_C\. Однако в разных редакторах реестра вместо SYSTEM_ON_C реестр системы с винта может импортироваться и в другие ключи. Поэтому прежде чем загружать этот файл и импортировать его в реестр, надо проверить, куда конкретно импортировася реестр системы. Возможно, потребуется исправить путь к ключам в файле ide.reg. Например, заменить SYSTEM_ON_C на строку SYSTEM_ON_HDD, только после этого можно импортировать reg-файл. Произвести правку reg-файла можно с помощью встроенного редактора в FAR, который тоже входит в указанную сборку BartPE.

После импортирования reg-файла остаётся дело за малым (гы-гы, придёт малый, и доделаем) - нужно переписать драйвера стандартного контроллера IDE в каталог system32. Вот эти файлы:

atapi.sys
intelide.sys
pciide.sys
pciidex.sys

Затем можно грузиться с винта, всё должно заработать.

Рецепт проверен, всё железно работает.

Материал подготовлен по мотивам курения форума http://forum.ru-board.com. Там также обсуждаются варианты переноса XP с материнки Intel на не-Intel и прочие извращения.

Как отвязать Windows 7, 8, 10 от оборудования Обновлено 03.04.2016

Бывает необходимо перенести рабочую ОС со всем установленным софтом на новое железо — то есть вынуть винт из старого компьютера и вставить в новый, но при этом чтобы ни чего не упало.

Если новая материнская плата другого сокета и другого производителя — обязательно будут траблы с синим экраном, чтобы его поборот — нужно загрузится с какой-либо реанимационной фиговины — ERD Commander, WinPE и так далее, суть лишь в том — чтобы добраться до системного реестра винды на винте. Обычно линукс для этого не подходит.

Первым делом необходимо удалить ветку реестра HKLM\SYSTEM\MountedDevices

После этого, нужно включить запуск сервисов, которые загружают стандартные драйвера контроллеров IDE и/или SATA.

Открываем ветку HKLM\SYSTEM\CurrentControlSet\services в левой части редактора реестра.

Смотрим и проверяем разделы в ветке: amdide, amdsata, amdxata, atapi, intelide, msahci, pciide.

Параметр Start у каждого должен быть равен 0х00000000 (0)

После того, как start установлен в значение 0 (ноль) у всех указанных выше разделов реестра, закрываем редактор реестра и перезагружаем компьютер. Windows загружается и начинает устанавливать (либо спрашивать) драйвера на новую материнскую плату.

Все программы и данные на месте… все счастливы.

Внимание! Если у вас материнская плата на менее известном/распространенном чипсете - то вам стоит попробовать установить значение параметра Start равным 0 в сервисах:

adp94xx, adpahci, adpu320, aic78xx, amdsbs, arc, arcsas, elxstor, HpSAMD, iaStorV, iirsp, LSI_FC, LSI_SAS, LSI_SAS2, LSI_SCSI, megasas, MegaSR, nfrd960, nvraid, nvstor, ql2300, ql40xx, SiSRaid2, SiSRaid4, vhdmp, vsmraid, aliide, cmdide, nvraid, viaide.

Все, можем перезагружаться и операционка нанет втыкать драйверы под новое оборудование, под которое сможет. Под которе не сможет — ищите на диске производителя оборудования, офф-сайте или драйвер-паках.

Рано или поздно каждый из нас обнаруживает, что катастрофически не хватает места на жестком диске. Программа Acronis может перенести (клонировать) установленную систему, а также все приложения на новый жесткий диск большей емкости.

Для переноса системы необходимо, чтобы новый жесткий диск был предварительно установлен в компьютер. Если в компьютере нет места для установки еще одного жесткого диска, его можно временно подключить вместо дисковода компакт-дисков.

В Acronis возможны два режима переноса системы – это ручной режим и автоматический режим.

В большинстве случаев достаточно возможностей автоматического режима.

В этом режиме вы перенесете все данные со старого диска (разделы, папки, файлы…) на новый диск. После замены старого жесткого диска на новый, новый жесткий диск станет загрузочным. Перемычка нового жесткого диска должна быть в положении Master.

Rencontres Du Film Court Antananarivo

Разница между новым и старым диском будет только одна, размеры разделов будут больше. Все остальное – операционная система, записанная на диск информация, метки диска и т. д. останутся неизменными.

В ручном режиме выполнить процедуру клонирования можно более гибко.

Вы сможете указать способ переноса разделов и данных:

Перенести разделы и данные как есть;
— распределить место между разделами на новом диске;
-сохранить разделы и (данные!) на старом жестком диске;
-удалить информацию со старого жесткого диска;
-создать на старом диске новую структуру разделов (данные на нем будут утеряны).

Имейте в виду, если во время переноса данных пропадет напряжение сети, то процедура переноса данных не будет завершена. Новый жесткий диск можно будет использовать только после успешного повторного клонирования. Данные на старом жестком диске не будут потеряны, так как до окончания переноса данных Acronis не выполняет с этим диском никаких действий, кроме считывания.

Перенос системы в автоматическом режиме.

Запускаем программу. Выбираем категорию «Дисковые утилиты».

В новом окне выбираем «Клонировать жесткий диск».

Появится «Мастер клонирования дисков».

Выбираем режим клонирования «Автоматический». Нажимаем «Далее».

Если целевой диск содержит разделы, ставим переключатель «Удалить все разделы на целевом диске» и нажимаем «Далее». На этом этапе программа создает план клонирования и не выполняет никаких реальных действий. В новом окне вы увидите информацию об исходном жестком диске и какую структуру будет иметь новый жесткий диск.

Итоговое окно клонирования.

Прежде чем «Приступить», вы можете воспользоваться кнопкой «Назад», чтобы вернуться к предыдущим окнам и внести необходимые изменения. Для отмены процедуры и выхода в главное окно программы — кнопка «Отмена».

От себя добавлю, что перенести систему можно также через создание образа системного диска или всего жесткого диска на исходном жестком диске, а затем через функцию «Восстановление» восстановить на новом жестком диске, предварительно подключив его в компьютер. Однако, имейте в виду, что функция «Восстановление» не умеет создавать разделы. Это значит, что разделы на целевом диске, предназначенные для размещения данных из резервной копии, необходимо предварительно создать. Для создания разделов можно применить другой продукт компании Acronis — Acronis Disk Director Suite 10.

Иногда случается так, что необходимо поменять старое отжившее железо на новое. Обычно проблем с этим не возникает, старое снял — новое поставил, за исключением замены материнской платы . С ней все так просто не получается. Если мы просто заменим плату, то при загрузке, где то в районе мерцающих флажков, увидим всеми «любимый» синий экран (BSOD) с ошибкой STOP 0x0000007B.

Как мы уже знаем, на есть чипсет и контроллеры которым устанавливаются собственные драйвера, при замене, драйвера в операционной системе остаются старые, а вот чипсет и контроллеры меняются, в итоге запуск становится не возможен. Обычно проблема появляется из-за смены контроллера шины ATA/SATA, Windows не может самостоятельно поменять драйвер контроллера во время загрузки и теряет жесткий диск, запуск становится не возможен.

Хочу сразу оговориться, проблема возникает не в 100% случаев. При замене в пределах одного сокета , чипсета большая вероятность запуска системы без появления синего экрана (BSOD) с ошибкой STOP 0x0000007B.
Собственно на этом теория заканчивается и возникает извечный вопрос: «Что делать?». Скажу не томя, есть два варианта решения данной проблемы, простой и посложней (вариант с переустановкой ОС, даже не рассматриваем).

Вариант 1.

Перед переносом нашего HDD с установленой Windows 7 на новое железо, необходимо воспользоваться штатной утилитой sysprep.

Нажимаем «Пуск», в строке поиска (она в самом низу) набираем CMD , в найденных программах (обычно самая первая) наводим курсор и нажимаем правую кнопку мыши и запустить от имени администратора, подтверждаем запуск. Набираем: C :\ Windows \ system 32\ sysprep \ sysprep . exe и нажимаем Enter (можно просто дойти до файла по этому адресу и запустить двойным кликом левой кнопки мыши).

Запускается Программа подготовки системы 3.14 которая откатывает Windows до состояния первого входа в систему, к тому моменту, когда операционная система не была привязана к оборудованию, путем удаления драйверов устройств.

После завершения работы программы заменяем материнскую плату и прочее «железо», и запускаем компьютер. Начинается процесс, происходящий на финальном этапе установки ОС Windows. Необходимо ввести имя пользователя (не должно совпадать с прежним, т.к. та учетная запись уже есть в системе) и имя компьютера и завершить установку. Перезагружаем компьютер (или выходим через завершение сеанса) и авторизуемся под своей учетной записью (на экране приветствия будет как новая, так и старая). После входа удаляем созданную учетную запись и ее профиль. Теперь остается установить новые драйвера и на этом перенос окончен.

Однако у данного метода есть недостаток, активация Windows и большинства софта слетает, так что нужно будет активировать все заново

Данный вариант очень прост и рассматривался в сжатом виде. Спросите почему в сжатом? Все просто, мы же не ищем легких путей! У меня обычно бывает так: Сначала меняю железо, потом соображаю, что ОС запускаться не хочет (по этому Вариант 1 описан с теоретической точки зрения основываясь на базе знания windows) и начинается поиск решения (не пересобирать же обратно железо). Как раз для таких как я есть вариант два, на нем остановимся подробней.

Вариант 2.

Он то же не сложен, хотя манипуляций потребуется несколько больше. Старое железо отвяжем путем прямой правки реестра. Но обо всем по порядку:

  1. Нам потребуется образ Windows PE (среда предустановки Windows, использующаяся для подготовки к установке операционных систем Windows), либо образ ОС (ее то же называют Windows PE , хотя это уже не просто среда для подготовки, а практически полноценная ОС) не привязанная ни к какому железу установленные на флешку или USB HDD. Все это можно найти на просторах сети.
  2. Загружаемся и если это «полноценная» ОС загружаемся и запускаем редактор реестра (он обычно присутствует), выбираем нашу ОС и подключаемся к ней. Если загружаемся с Windows PE , то выбираем восстановление системы и выбираем пункт выбираем пункт Microsoft Diagnostics and Recovery Toolset .
  3. Запускаем редактор реестра .
  4. Сначала удаляем ветку реестра HKLM\SYSTEM\MountedDevices
  5. Далее включаем запуск сервисов, загружающих стандартные драйвера контроллеров IDE иSATA. Для этого раскрываем ветку HKLM\SYSTEM\CurrentControlSet\services заходим в раздел amdide . Находим параметр Start и выставляем его значение 0х00000000 (0) , если оно иное (Start=0 — запуск сервиса при загрузке Windows) Для этого дважды кликаем на имени параметра Start и заменяем значение на 0 (ноль) и жмем ОК . Так же поступаем в разделах: amdsata, amdxata, atapi, intelide, msahci, pciide
  6. После окончания правки закрываем редактор реестра, перезагружаем компьютер в нормальном режиме и устанавливаем драйвера.
В принципе для запуска этого достаточно и у меня дополнительной правки не требовалось, но в случае если это не помогло загружаемся еще раз и правим параметр Start в следующих сервисах: adp94xx, adpahci, adpu320, aic78xx, amdsbs, arc, arcsas, elxstor, HpSAMD, iaStorV, iirsp, LSI_FC, LSI_SAS, LSI_SAS2, LSI_SCSI, megasas, MegaSR, nfrd960, nvraid, nvstor, ql2300, ql40xx, SiSRaid2, SiSRaid4, vhdmp, vsmraid, aliide, cmdide, nvraid, viaide.
Доброго времени суток, товарищи крякеры!
Давненько я не писал статей о взломе... Но вот, время пришло!)

Сегодня я расскажу вам о довольно таки универсальном способе отвязки программ от железа. Единственное условие, без которого ничего не выйдет: У вас должен быть правильный ключ, привязанный к какому-то чужому ID .

Итак, что нам понадобится :

  • Olly Debugger v2 ;
  • CFF Explorer ;
  • Немного мозгов;
  • Более-менее прямые руки.
Ссылки на ПО за вас найдет гугл. Для данной статьи я накидал простенькую программку deIDme , которая и послужит нам образцом для опытов.

Она имеет простенький функционал :

  1. Получить VolumeID диска C:\ через GetVolumeInformation ;
  2. Получить сумму байт ID ;
  3. Сравнить введенную пользователем сумму, с полученной;
  4. Если все ОК - вывести хорошее сообщение, иначе - плохое.
Конечно, можно было бы просто изменить условие проверки на противоположное, но не всегда все так просто...

Алгоритм действий такой:

  1. Внедрить в EXE-файл чужой ID;
  2. Внедрить процедуру, которая будет копировать внедренный нами ID на место считанного;
  3. Найти место, где программа получает строку ID или ее части;
  4. Вызвать данную процедуру после получения ID;
  5. Ввести ключ от чужого ID и радоваться.

НАЧАЛО


Давайте запустим наше тестовое приложение и осмотримся.
Я попробовал ввести любой ключ и получил "плохое" сообщение. Будем исправлять.

ВНЕДРЕНИЕ


Откроем CFF Explorer и в нем нашу программу. Нам нужен раздел Section Headers .
Нам нужно добавить новую секцию для того, чтобы записать в нее наш ID .
Вводим размер, равный количеству символов в строке + 1 байт на 0x00 байт. Т.е. у меня выходит, что 12 символов с строке ID, и +1 на байт-терминант .

ЗАРАНЕЕ ИЗВЕСТНО , что для чьего-то ID = 123456789020 , ключ должен быть: 1388 .
Поэтому я в новую секцию вписал нужный идентификатор.


Теперь нужно узнать физический адрес данной секции. Запоминаем его.
Сохраняем изменения в файле. Закрываем CFF Explorer .

Теперь открывает File Location Calculator и в нем нашу лабораторную крыску. Вводим файловое смещение и жмем Calculate .

Получаем значение: 40C000 .​


Теперь собственно модификация кода...

Открываем модифицированное приложение в Olly Debugger . Я уже нашел место в коде, где происходит получение строки идентификатора: 40410D . Замечаем, что полученная строка находится по адресу: 148B78 :


Сейчас нам нужно внедрить процедуру копирования нашей строки в нужное место и вызвать ее, не испортив остального кода. В этот процесс подробно описан. Но я повторю вам основные моменты:
  1. Найти место, куда вставить нашу процедуру;
  2. Команды, которые будут на месте вызова процедуры перенести в код процедуры.

Ищем место для внедрения процедуры


Найти его довольно таки просто по повторяющимся одинаковым байтам. Обычно такие места можно найти ближе к концу программного кода. Это могут быть либо 0000 , либо CCCC . Но их должно хватать.

Внедряем процедуру


Выделяем как можно больше пустых команд и жмем клавишу Пробел . Поочередно в появившемся окошке вводим команды, согласно первому исходному коду в статье Manhunter "а:

Pusha cld mov edi, mov esi, mov ecx, push ecx shr ecx,2 rep movsd pop ecx and ecx,3 rep movsb popa ret

- адрес, КУДА будет копироваться НАША строка.
- адрес, НАШЕЙ строки.
- размер нашей строки в шестнадцатеричной системе счисления.

Поэтому исправляем код на следующий:

Pusha cld mov edi, 148B78 mov esi, 40C000 mov ecx, D push ecx shr ecx,2 rep movsd pop ecx and ecx,3 rep movsb popa ret

Получилась такая вот картина (замечаем, что процедура начинается с адреса 40435C ):