| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Masm32 Simple Patch Problem im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo Hb User, bin normal ein aktiver Leser und Sucher, nur für dieses Problem muss ich euch mal direkt ...
![]() |
| | #1 (permalink) |
| Registriert seit: 07.09.11 ![]() Likes: 0 | Anzeige Hallo Hb User, bin normal ein aktiver Leser und Sucher, nur für dieses Problem muss ich euch mal direkt fragen. Ich habe einen simplen Patch in Masm32 geschrieben, nur leider funktioniert er nicht so wie er es sollte. Habe auch schon seit zwei tagen nach dem Fehler gesucht. Aber seht selbst: Offset im Programm: ![]() Code: .data
TargetName db "Patchtest.exe", 0
BackupName db "Patchtest.bak", 0
PatchOffset dd 103Bh
Old db 75h, 39h, 6Ah, 64h
New db 0EBh, 39h, 6Ah, 64h
...
.data?
hInstance HINSTANCE ?
hTarget HINSTANCE ?
RBuffer dd ?
BytesRead db ?
BytesWritten db ?
.code
...
Patch proc hWnd:HWND
invoke GetFileAttributes, ADDR TargetName
.if eax != FILE_ATTRIBUTE_NORMAL
invoke SetFileAttributes, ADDR TargetName, FILE_ATTRIBUTE_NORMAL
.endif
invoke CreateFile, ADDR TargetName, GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRITE, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL
.if eax != INVALID_HANDLE_VALUE
mov hTarget, eax
invoke SendDlgItemMessage, hWnd, CBBackup, BM_GETCHECK, NULL, NULL
.if eax == BST_CHECKED
invoke CopyFile, ADDR TargetName, ADDR BackupName, TRUE
invoke List, hWnd, ADDR s_Backup
.endif
invoke SetFilePointer, hTarget, PatchOffset, NULL, FILE_BEGIN
invoke ReadFile, hTarget, ADDR RBuffer, 4, ADDR BytesRead, NULL
.if BytesRead == 4
mov eax, dword ptr [RBuffer]
.if eax == dword ptr [Old]
invoke SetFilePointer, hTarget, PatchOffset, NULL, FILE_BEGIN
invoke WriteFile, hTarget, ADDR New, 1, ADDR BytesWritten, NULL
.if BytesWritten == 1
invoke List, hWnd, ADDR Success
.else
invoke List, hWnd, ADDR f_Write
.endif
.elseif eax == dword ptr [New]
invoke List, hWnd, ADDR f_Already
.else
invoke List, hWnd, ADDR f_Version
invoke MessageBox, hWnd, ADDR RBuffer, ADDR BytesWritten, MB_OK
.endif
.else
invoke List, hWnd, ADDR f_Read
.endif
.else
invoke List, hWnd, ADDR f_Open
.endif
invoke CloseHandle, hTarget
Ret
Patch endp Vielen Dank |
| | |
| | #2 (permalink) |
| Registriert seit: 27.02.07 ![]() Likes: 2 | Ich würde den Patch mit Olly debuggen und schauen woran es liegt (ob die richtigen Daten geladen werden). Ohne die Originaldatei ist es jedoch nicht möglich die Adressen zu überprüfen und weitere Hilfen zu geben. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Vielleicht gibt es auch mehrere Positionen auf die die Bytereihenfolge zutrifft? Deswegen wäre eine genauere Defintion des Fehlers von großem Nutzen.
__________________ Be the source always with you. | |
| | |
| | #4 (permalink) |
| Themenstarter Registriert seit: 07.09.11 ![]() Likes: 0 | Danke schonmal für eure Bemühungen, leider konnte ich nur in Erfahrung bringen, dass der "RBuffer" nicht die richtigen Bytes nach dem Lesen beinhaltet. Ich hoffe ihr könnt mir damit weiterhelfen, wenn ich euch die Sourcecodes und Programme gebe. Sie sind ein wenig gekürzt, haben aber immer noch die selben Offsets: File-Upload.net - SimplePatch.rar Danke |
| | |
| | #5 (permalink) |
| Themenstarter Registriert seit: 07.09.11 ![]() Likes: 0 | Ich habe die Lösung nun doch noch endlich gefunden und poste sie, damit jemand mit dem selben Problem schneller eine Lösung finden kann. Mein Code war vollkommen richtig, bis auf dem Offset. Den ermittelt man nämlich durch eine kleine Rechnung: Code: virtual address - imagebase - code base + pointer to rawdata for .text section or .code section 0x40103B - 0x400000 - 1000 + 400 = 0x43B Vielen Dank nochmal an mucki und ChiefWiggum für die Hilfe. Euer Pro Grammer |
| | |
![]() |
| Stichworte |
| assembler, masm32, patch |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [masm32] Betätigen einer Checkbox mit SendMessage | dietox | Code Kitchen | 6 | 14.08.08 21:55 |
| Masm32 Code patchen | ragdog | Code Kitchen | 12 | 19.07.08 14:24 |
| Simple BufferOverflow Tutorial | Nimda05 | (In)security allgemein | 6 | 08.10.07 15:05 |
| [masm32] unsigned 64-Bit Wert in String umwandeln(dezimal) | Lesco | Code Kitchen | 0 | 22.04.06 16:14 |
| Kompilieren mit MASM32??? | Flexball | Code Kitchen | 1 | 29.04.04 00:30 |