CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Kod z C# do Borland C++

Kod z C# do Borland C++

dział ogólny

Re: Kod z C# do Borland C++

Nowy postprzez TheAmatorPL » poniedziałek, 2 lutego 2015, 12:42

Tak, wlasnie, tam gdzie mov plus okreslona wartosc (tam jest ujemna jako Float).
W rezultacie jest JMP.
Pelny kod wyslalem Ci w tekstowym.
8-)
Avatar użytkownika
TheAmatorPL
Bladawiec
Bladawiec
 
Posty: 28
Dołączył(a): wtorek, 18 listopada 2014, 18:44
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: windows 7
Kompilator: C++ Builder 2007
Gadu Gadu: 0
    Windows 7Chrome

Re: Kod z C# do Borland C++

Nowy postprzez polymorphism » poniedziałek, 2 lutego 2015, 13:16

Chwila, ja pisałem o kodzie, który napisałeś w C++, bo jak rozumiem, to on sprawia problemy, a screen odnosi się właśnie do niego.

Odnośnie samej podmiany. Rozumiem, że chcesz podmienić trzy pierwsze linie:
KOD asm:     UKRYJ  
fld dword ptr [ebx + 8] ; 3 bajty
pop ebx ; 1 bajt
fstp dword ptr [eax + 8] ; 3 bajty
mov eax, [ebp + 0x0c]

na
KOD asm:     UKRYJ  
mov dword ptr [ebx + 8], 0xc4f9e000 ;7 bajtów (dlaczego tu jest ebx a nie eax?)

Ilość bajtów by się zgadzała, tylko jest małe ale - instrukcja POP. Ona musi być wywołana, bo inaczej stos nie będzie się zgadzał, i problem gotowy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 199
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod z C# do Borland C++

Nowy postprzez TheAmatorPL » piątek, 6 lutego 2015, 19:49

Wszystkie SCREENY odnosza sie do CE , a w textowym jest kod ASM z CE. Na screenach jest pokazane przed i po zadzialaniu kodu.
Pytales czemu tam jest ebx a nie eax - JESLI wstawie tam eax to kod nie dziala ( nie przynosi spodziewanego efektu).
To dziala na zasadzie , ze jest np. obiekt ( przykladowo samochod na drodze ) , dzieki temu sprawiam ze znajduje sie on 10 metrow na droga.
Po to jest wlasnie ten float aby przypisac mu wysokosc. Testowalem to jako ASM w Borlandzie i wykrzacza .exe. Pozniej rowniez testowalem jako zmiane
poprzez Opcody i ciagle tak samo. Dzialo to wszystko jedynie w tej wersji , co Ci wyslalem na screenach...
Avatar użytkownika
TheAmatorPL
Bladawiec
Bladawiec
 
Posty: 28
Dołączył(a): wtorek, 18 listopada 2014, 18:44
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: windows 7
Kompilator: C++ Builder 2007
Gadu Gadu: 0
    Windows 7Chrome

Re: Kod z C# do Borland C++

Nowy postprzez polymorphism » piątek, 6 lutego 2015, 20:27

Sugerowałem się tymi trzema zmienianymi liniami, z których jasno wynika, że czytana jest jakaś wartość zmiennoprzecinkowa z [ebx + 8] i zapisywana jest w [eax + 8]. Myślałem, że chodziło Ci o to, żeby nie czytać tej wartości z pamięci, tylko na sztywno ją ustawić. Ale z tego co piszesz chodzi po prostu o zmianę wartości pod adresem [ebx + 8].
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 199
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod z C# do Borland C++

Nowy postprzez TheAmatorPL » piątek, 6 lutego 2015, 22:35

Tak, właśnie chodzi o to aby tam zmienić i określić jej wartość, w tym wypadku jest tam na minusie, bo jak wiadomo minus oznacza do góry ( Z).
Działa to tak, że ta wartość jest na bieżąco ciągle czytana, zmieniam ja na minus - i ona nadal jest na bieżąco czytana, lecz ten minus działa, zmieniając pozycje Z.
Może dlatego tam pojawia się JMP , kiedy zmieniam tę wartość... (zerknij na screena). Możliwe, że przez to, iż ta wartość jest na bieżąco czytana, wywala program.
Jeśli chcę to zrobić przez np. zmianę w Opcodach. Sam już nie wiem... :roll:
Ostatnio edytowano sobota, 7 lutego 2015, 09:57 przez Cyfrowy Baron, łącznie edytowano 1 raz
Powód: Przed przecinkiem i kropką nie wstawia się spacji. Podobnie w nawiasach. Żeby łatwiej się czytało, używamy polskich znaków diakrytycznych.
Avatar użytkownika
TheAmatorPL
Bladawiec
Bladawiec
 
Posty: 28
Dołączył(a): wtorek, 18 listopada 2014, 18:44
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: windows 7
Kompilator: C++ Builder 2007
Gadu Gadu: 0
    Windows 7Chrome

Re: Kod z C# do Borland C++

Nowy postprzez polymorphism » sobota, 7 lutego 2015, 10:48

Dlaczego tam jest JMP - nie wiem. Ale jeśli po podmianie, jak twierdzisz, wszystko działa, to znaczy, że (gdzieś) tam jest ta wpisana instrukcja MOV. A patrzyłeś, co jest pod adresem, gdzie skacze JMP? Może skok jest wykonywany do "nowego" MOV i być może innych instrukcji zakończonych skokiem powrotnym - to by miało sens.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 199
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Kod z C# do Borland C++

Nowy postprzez TheAmatorPL » sobota, 7 lutego 2015, 13:38

Po zmianie jest Jump Near.Tam na screenie w Opcodach przy Jumpie E9 B5 21 są stałe , natomiast EA i FF się zmienia. Tzn. w zależności kiedy zaaplikuje kod,
Sądzę , że jest to związane z tym jak wcześniej pisałem , z czytaniem bezpośrednim pozycji... :roll:
Avatar użytkownika
TheAmatorPL
Bladawiec
Bladawiec
 
Posty: 28
Dołączył(a): wtorek, 18 listopada 2014, 18:44
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: windows 7
Kompilator: C++ Builder 2007
Gadu Gadu: 0
    Windows 7Chrome

Re: Kod z C# do Borland C++

Nowy postprzez polymorphism » sobota, 7 lutego 2015, 14:08

Ech, ciężko idzie. Ja nie pytałem się o to, co jest po zmianie, bo to już wiem. Mnie interesuje to, co znajduje się pod adresem, gdzie skacze ów JMP (czyli co jest pod adresem 0xE70000).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 199
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod z C# do Borland C++

Nowy postprzez TheAmatorPL » poniedziałek, 9 lutego 2015, 22:40

Wyślę Ci screena na priv, tak będzie najlepiej. 8-)
Avatar użytkownika
TheAmatorPL
Bladawiec
Bladawiec
 
Posty: 28
Dołączył(a): wtorek, 18 listopada 2014, 18:44
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: windows 7
Kompilator: C++ Builder 2007
Gadu Gadu: 0
    Windows 7Chrome

Re: Kod z C# do Borland C++

Nowy postprzez polymorphism » poniedziałek, 9 lutego 2015, 23:40

Czyli jest tak jak myślałem. Pod tym adresem jest twoja instrukcja MOV i pozostałe trzy, które musiały zrobić miejsca dla skoku.

W zasadzie nie podmieniałeś żadnych opkodów, a jedynie dopisałeś jedną instrukcję, bez wpływu na pozostałe. To tłumaczy dlaczego kod z buildera nie działał Ci - tam z kolei nadpisywałeś na chama opkody, i dlatego miałeś błąd.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
TheAmatorPL
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 199
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod z C# do Borland C++

Nowy postprzez TheAmatorPL » wtorek, 10 lutego 2015, 19:24

Da rady coś takiego zrobić w Borlandzie, aby działało? W jaki sposób zrobić miejsce , aby wykonać taki skok ? Konieczne jest użycie ASM w Borlandzie , aby nie
zawieszało .exe? Czy jest inny sposób? :roll:
Avatar użytkownika
TheAmatorPL
Bladawiec
Bladawiec
 
Posty: 28
Dołączył(a): wtorek, 18 listopada 2014, 18:44
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: windows 7
Kompilator: C++ Builder 2007
Gadu Gadu: 0
    Windows 7Chrome

Re: Kod z C# do Borland C++

Nowy postprzez polymorphism » wtorek, 10 lutego 2015, 20:28

Jeśli się dało to zrobić w tym programie, to i da się w C++ builderze. Jeśli chodzi o przydział miejsca, to wydaje mi się - a specjalistą w tego typu zabawach nie jestem - że musisz użyć funkcji VirtualAllocEx (MEM_COMMIT i PAGE_EXECUTE_READWRITE?).

Konieczne jest użycie ASM w Borlandzie

Nie wiem, co rozumiesz pod pojęciem "ASM w Borlandzie", ale inaczej niż wpisywanie opkodów do pamięci tego nie zrobisz.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 199
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: Kod z C# do Borland C++

Nowy postprzez TheAmatorPL » wtorek, 10 lutego 2015, 22:23

OK, pokombinuje , może się uda :o A jeśli nie , to spróbuje zrobic to w C#.
Jak coś zrobie to dam znać na forum, bo byc może ktoś kiedys bedzie potrzebował cos takiego.
Dzięki wielkie za pomoc w tym temacie. 8-)
Avatar użytkownika
TheAmatorPL
Bladawiec
Bladawiec
 
Posty: 28
Dołączył(a): wtorek, 18 listopada 2014, 18:44
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: windows 7
Kompilator: C++ Builder 2007
Gadu Gadu: 0
    Windows 7Chrome

Re: Kod z C# do Borland C++

Nowy postprzez polymorphism » środa, 11 lutego 2015, 00:12

Jeśli nie wyjdzie Ci w C++, to także nie wyjdzie w C#. W obu przypadkach będziesz używał w zasadzie tych samych funkcji i tego samego sposobu.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 199
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Poprzednia strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości

cron