Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2018, 22:31   #1
Girei
Пользователь
 
Аватар для Girei
 
Регистрация: 22.10.2013
Сообщений: 72
По умолчанию Подмена данных

Доброго времени суток. Решил немного упороться низкоуровневым программированием. Имею чуть более, чем общие понятия о стеке, устройстве памяти и иже с ними. Суть задачи: есть простейшая программа на С++:
Код:
#include "stdafx.h"
#include <iostream>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	int a = 5, b = 6, c;
	c = a + b;
	std::cout << c << "\n";
	system("pause");
}
Суть задачи: подменить значение переменной "а" в уже собранном ехе. Пытался ковырять дизассемблером, но он выдаёт просто гигантский листинг, который с моими знаниями очень трудно анализировать. Посоветуйте, в каком направлении действовать.
Girei вне форума Ответить с цитированием
Старый 15.03.2018, 00:19   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Girei Посмотреть сообщение
в каком направлении действовать.
Накопить чуть более чем общие понятия.
waleri вне форума Ответить с цитированием
Старый 15.03.2018, 07:46   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,694
По умолчанию

Цитата:
Сообщение от Girei Посмотреть сообщение
Пытался ковырять дизассемблером, но он выдаёт просто гигантский листинг, который с моими знаниями очень трудно анализировать.
Серьезно?
гцц
Код:
.LC0:
  .string "\n"
main:
  sub rsp, 8
  mov esi, 11
  mov edi, OFFSET FLAT:std::cout
  call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
  mov esi, OFFSET FLAT:.LC0
  mov rdi, rax
  call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
  xor eax, eax
  add rsp, 8
  ret
_GLOBAL__sub_I_main:
  sub rsp, 8
  mov edi, OFFSET FLAT:std::__ioinit
  call std::ios_base::Init::Init()
  mov edx, OFFSET FLAT:__dso_handle
  mov esi, OFFSET FLAT:std::__ioinit
  mov edi, OFFSET FLAT:std::ios_base::Init::~Init()
  add rsp, 8
  jmp __cxa_atexit
мсвс
Код:
main    PROC                                            ; COMDAT
        sub      rsp, 40              ; 00000028H
        mov      edx, 11
        lea      rcx, OFFSET FLAT:std::cout
        call     std::basic_ostream<char,std::char_traits<char> >::operator<<
        mov      rcx, rax
        lea      rdx, OFFSET FLAT:`string'
        call     std::operator<<<std::char_traits<char> >
        xor      eax, eax
        add      rsp, 40              ; 00000028H
        ret      0
main    ENDP
p51x вне форума Ответить с цитированием
Старый 15.03.2018, 09:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Girei Посмотреть сообщение
Суть задачи: подменить значение переменной "а" в уже собранном ехе.
как показывают примеры ассемблерного кода, любезно выложенные p51x,
никакой
Цитата:
переменной "а"
и
Цитата:
переменной "b"
в коде нет. и следов не осталось.
Оптимизатор вычислил итоговое значение и оставил в коде:
Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
mov esi, 11
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.03.2018, 15:57   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,529
По умолчанию

Дык выключить оптимизацию в компайлере! Или вооще откомпилить вручную
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Help] Подмена данных о GPU с помощью MS Detours 3.0 SuprSonic Общие вопросы C/C++ 26 18.11.2017 08:27
Подмена данных, отправляемых браузером WennY Софт 2 29.07.2011 14:05
подмена данных в программе linkod Фриланс 9 12.03.2009 11:12
Подмена отправляемых данных noxonsu Фриланс 1 02.03.2009 05:51
Подмена данных Smip Microsoft Office Excel 2 13.01.2009 08:51