-
Постов
400 -
Зарегистрирован
-
Посещение
-
Победитель дней
26
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные gmz
-
-
Окей, когда я добавил это и скомпилил - как это использовать?
Да и... Прокатит ли такой метод, если хукаешь онлайн игру? Всмысле, не спалит ли античит такого финта?
даешь длке расширение cpl или настрой компиль чтобы ставил не .dll а .cpl - и можешь инжектить ее в игру 2 кликом как будто это .ехе
для онлайна как минимум надо добавить заморозку процесcа например NtSuspendProcess/NtResumeProcess и когда процесс заморожен - скрыть модуль в PEB +ставить все хуки/патчи перед созданием потока.
+вариант 2 получения размера модуля (напрямую):
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)GetModuleHandle(0);PIMAGE_FILE_HEADER pFileHeader = (PIMAGE_FILE_HEADER)((DWORD)pDosHeader+pDosHeader->e_lfanew+sizeof(IMAGE_NT_SIGNATURE));PIMAGE_OPTIONAL_HEADER pOptionalHeader = (PIMAGE_OPTIONAL_HEADER)((DWORD)pFileHeader+IMAGE_SIZEOF_FILE_HEADER);DWORD health = FindPattern((DWORD)pDosHeader,pOptionalHeader->SizeOfImage, (PBYTE)"\x89\x46\x14\x7D\x33", "xxxxx");DWORD knife = FindPattern((DWORD)pDosHeader,pOptionalHeader->SizeOfImage, (PBYTE)"\x89\xBE\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x5F\x5D", "xx????x????xx");
- 1
-
такс... затести. самоинжекторная длка. после сборки переименуй main.dll в main.cpl
в Memory.h исправь баг: после инициализ PROCESSENTRY32 pe32;
добавь:
pe32.dwSize = sizeof(PROCESSENTRY32);
Main.cpp DllMain будет такой:
DWORD WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved){HANDLE hProcess;HANDLE hRemoteBuffer;HANDLE hRemoteThread;int pId;char ModulePath[MAX_PATH];if (fdwReason == DLL_PROCESS_ATTACH){DisableThreadLibraryCalls(hinstDLL);if (GetModuleHandle("calc.exe")){CloseHandle(CreateThread(0,4096,AS_thread,0,0,0));} else {if (pId = FindProcessByName("calc.exe")){if (hProcess = OpenProcess(PROCESS_CREATE_THREAD+PROCESS_QUERY_INFORMATION+PROCESS_VM_OPERATION+PROCESS_VM_READ+PROCESS_VM_WRITE,0,pId)){hRemoteBuffer = VirtualAllocEx(hProcess,0,4096,MEM_COMMIT,PAGE_READWRITE);WriteProcessMemory(hProcess,hRemoteBuffer,ModulePath,GetModuleFileName(hinstDLL,ModulePath,MAX_PATH),0);hRemoteThread = CreateRemoteThread(hProcess,0,4096,(LPTHREAD_START_ROUTINE)LoadLibrary,hRemoteBuffer,0,0);WaitForSingleObject(hRemoteThread,INFINITE);CloseHandle(hRemoteThread);VirtualFreeEx(hProcess,hRemoteBuffer,4096,MEM_DECOMMIT);CloseHandle(hProcess);}}}return 1;}}
GetModuleHandle("calc.exe") < заменишь на ехе игры или на d3d11.dll (какой там игра использ.). оно нужно для детекта когда длка в rundll32.exe или игре
FindProcessByName("calc.exe") < тут понятно
- 2
-
Мой код настолько крут, что он сам себя компилит.
ога. зачем setvbuf(stdout, NULL, _IONBF, 0); и DWORD pID = GetCurrentProcessId(); нужны?
давай из этой длл сделаем cpl? типа будет инжектить саму себя в игру. на С еще такого не делал
добавил еще пару опций для mingw примера, теперь без мусора
-
вау... звучит заумно... останусь-ка я на visual studio)
вс2013.4 генерит меньше мусора - 2.10кб но код не настолько "крут" Lol
http://rghost.ru/private/7WHmvnKyS/dd6c03a7ee3882081fcbae64bb0c5a03
@echo off..\vc2013.4\vc\bin\cl.exe main.cpp /nologo /c /W1 /GS- /analyze- /Gy /Gm- /O2 /Gd /Oy- /Oi /MD /EHsc /I"..\vc2013.4\vc\include" /I"..\vc2013.4\Windows Kits\8.1\Include\um" /I"..\vc2013.4\Windows Kits\8.1\Include\shared"..\vc2013.4\ulink.exe -q -Z- -ZX- -W6.0 -U0.0 -V6.0 -S:0x1000 -Sc:0x1000 -H:0x10000 -Hc:0x0 -GF:NXCOMPAT -Gh -Gz -Ge -GS:*=* -ap -Tpd -e_DllMain@12 main.obj -ZOmain -L"..\vc2013.4\Windows Kits\8.1\Lib\winv6.3\um\x86" -L"..\vc2013.4\VC\lib" -zkernel32;user32;msvcrt;psapidel *.objpause
-
Да, и можно ссылку на тот компилятор, что ты говоришь?
для х64 винды (может собирать х32 и х64):
спец линкер (нужен только ulink.exe):
ftp://ftp.styx.cabel.net/pub/UniLink/
потом распак папку mingw64 в папку, бросаешь туда ulink.exe, создаешь там папку например acHack, бросаешь туда исходники. создаешь там make.cmd
в make.cmd:
@echo off..\mingw64\bin\g++.exe -c main.cpp -m32 -municode -s -Os -O3 -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections..\ulink.exe -q -Z- -ZX- -W6.0 -U0.0 -V6.0 -S:0x1000 -Sc:0x1000 -H:0x10000 -Hc:0x0 -GF:NXCOMPAT -Gh -Gz -Ge -GS:*=* --gcc -ap -Tpd -e_DllMain@12 main.o -ZOmain.dll -L..\mingw64\x86_64-w64-mingw32\lib32 -zkernel32;user32;msvcrt;psapidel *.opause
иии получишь 2.58кб файл.. для х64: -m32 -> -m64 -Tpd -> -Tpd+ -L..\mingw64\x86_64-w64-mingw32\lib32 -> -L..\mingw64\x86_64-w64-mingw32\lib
ps убери #include <iostream>
ps2 для -municode надо многое исправить в исходнике. так что исправь или убери ключ
- 2
-
если пишешь лоадер, читай:
-
релиз билд надо делать, MSVCR120D.dll никто не юз. +ентри измени = не будет црт мусора, может 5кб станет..
кст смотри (код без модиф). MinGW 5.1.0 +ulink = 3.08кб Lulz +юзает стандартную msvcrt.dll
http://rghost.ru/private/6kB8p8TlM/fdde481e3405cabfba9ffec661f0681c
- 1
-
выше DllMain:
char KeySwitch01;char KeyStatus01;
после "Sleep(75))" весь кусок замени:
char Key;Key = (GetAsyncKeyState(VK_F1) >> 8);if (KeySwitch01 != Key){KeySwitch01 = (Key);if (Key){if (!KeyStatus01){ Beep(100, 500); printf("Health: ON \n Get Fun!!!"); VirtualProtect((LPVOID)addr, (size_t)5, PAGE_EXECUTE_READWRITE, &oldProtect); memcpy((void*)addr, (PBYTE)"0x90, 0x90, 0x90, 0x90, 0x90", 5); VirtualProtect((LPVOID)addr, 5, oldProtect, &oldProtect);KeyStatus01 = 1;} else { Beep(300, 500); printf("Health: OFF"); VirtualProtect((LPVOID)addr, (size_t)5, PAGE_EXECUTE_READWRITE, &oldProtect); memcpy((void*)addr, (PBYTE)"\x89\x46\x14\x7D\x33", 5); VirtualProtect((LPVOID)addr, 5, oldProtect, &oldProtect);KeyStatus01 = 0;}}}
- 1
-
длл геморно инжектить и следить за инжектом
даааа ладно. зацени: http://forum.gamehacklab.ru/topic/3648-need-for-speed-rivals-tablitca-trejner/#entry27837
посмотри на нее в CFFExplorer и в дебагере. она сама себя инжектит через виндовую фичу
-
базу модуля нормально получи:
#include "psapi.h"
MODULEINFO ModuleInfo;
GetModuleInformation(GetCurrentProcess(),GetModuleHandle(0),&ModuleInfo,sizeof(ModuleInfo));
DWORD addr = FindPattern(ModuleInfo.lpBaseOfDll, ModuleInfo.SizeOfImage, (PBYTE)"\x89\x46\x14\x7D\x33", "xxxxx");
или 0x1288000 это не размер? lol
+ выброси FindProcessByName. юзай GetCurrentProcess
- 1
-
-
"Ultimate Hack" о даааа деткоооо. хм а что в той "работе" такого особенного? по мне так обычный бредокод. sub_10002D50 и sub_10002E70
-
скопируй блок в котором ехе из проц. игры в трейнер и сканируй, так быстрее.. потом -база +база проц. игры = адрес
ps в длл варианте легче в сотни раз чем в ехе при правильной планировке xD
-
наверно так (включая блокировку вкл/откл когда клавиша зажата)
char KeySwitch01;char KeyStatus01;char Key;Key = (GetAsyncKeyState(VK_F1) >> 8);if (KeySwitch01 != Key){KeySwitch01 = (Key);if (Key){if (!KeyStatus01){KeyStatus01 = 1;} else {KeyStatus01 = 0;}}}
-
хп иногда косячит с PROCESS_ALL_ACCESS, так что задавай их отдельно например:
PROCESS_CREATE_THREAD+PROCESS_QUERY_INFORMATION+PROCESS_VM_OPERATION+PROCESS_VM_READ+PROCESS_VM_WRITE
- 1
-
ээээ.. спидхак, танк кто то уже осилил?
ps v1.4 х64 прогресс:
F1 unlimited nitro
F2 infinite health
F3 infinite weapons
F4 ignore pursuit
F5 freeze bank
F6 hide interface
F7 fast weapons
F8 off crash camera
F9 freeze camera
инжект 2 клика или любой длл инжектор..
http://rghost.ru/private/6C8vMBx49/9c436cf8642e5b863de991b0b2b40664
- 2
-
я на эту игру делал "х64 трейнер" дошел аж до 8 опций..
F1 unlimited nitro
F2 infinite health
F3 infinite weapons
F4 ignore pursuit
F5 freeze bank
F6 hide interface
F7 fast weapons
F8 off crash camera
кст кто то ломал физику? типа танк режим
-
00D3718D /0F85 9F000000 JNE 00D37232
00D37193 |A1 54C41B01 MOV EAX,DWORD PTR [11BC454]
00D37198 |2B46 34 SUB EAX,DWORD PTR [ESI+34]
00D3719B |8B8B 7C010000 MOV ECX,DWORD PTR [EBX+17C]
00D371A1 |F30F2AC0 CVTSI2SS XMM0,EAX
...
0F 85 ?? ?? ?? ?? A1 ?? ?? ?? ?? 2B 46 ?? 8B 8B ?? ?? ?? ?? F3
ollydbg > ctrl+b - проверяешь на уникальность- 1
-
лови. добавь там shell32.inc / shell32.lib
ps оно как кусок г. выглядит, даже unicode нету Lol
; #########################################################################;; This Is My Trainer Template Created For The Game Trainer Studio (Xeta);; This Is Based On A MASM Example.;; #########################################################################.386.model flat, stdcall ; 32 bit memory modeloption casemap :none ; case sensitiveinclude trainer.inc ; local includes for this fileinclude include\shell32.incincludelib lib\shell32.lib UrlProc PROTO :DWORD, :DWORD, :DWORD, :DWORD; #########################################################################.datahFontUl DWORD ?lpOrgStaticProc DWORD ?lpOrgWebProc DWORD ?hBrush DWORD ?bMouseOver DWORD ?hEmail DWORD ?hWeb DWORD ?hMain DWORD ?szWndClsMain BYTE "SSC_MAIN", 0szWndClsStatic BYTE "STATIC", 0szWebText BYTE "Домашняя страница", 0szWebURL BYTE "http://forum.gamehacklab.ru", 0szShelOpen BYTE "open", 0LabelHandle5500 dd ?LabelHandle5501 dd ?LabelHandle5502 dd ?; ### Constants Below; ### Constants Above; ### Bytes BelowHotKey00000 db 000hdb 001hdb 000hdb 001hHotKey00001 db 001hdb 001hdb 001hdb 000h; ### Bytes Above; ### Button Messages Below; ### Button Messages AboveWindCap db "Game.exe",0szDisplayName db 'Trainer-2',0.codestart:invoke GetModuleHandle, NULLmov hInstance, eaxinvoke GetCommandLinemov CommandLine, eaxinvoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULTinvoke ExitProcess,eax; #########################################################################WinMain proc hInst :DWORD,hPrevInst :DWORD,CmdLine :DWORD,CmdShow :DWORD;====================; Put LOCALs on stack;====================LOCAL wc :WNDCLASSEXLOCAL msg :MSGLOCAL Wwd :DWORDLOCAL Wht :DWORDLOCAL Wtx :DWORDLOCAL Wty :DWORD;==================================================; Fill WNDCLASSEX structure with required variables;==================================================invoke LoadIcon,hInst,500 ; icon IDmov hIcon, eaxszText szClassName,"Trainer_Class"mov wc.cbSize, sizeof WNDCLASSEXmov wc.style, CS_HREDRAW or CS_VREDRAW \or CS_BYTEALIGNWINDOWmov wc.lpfnWndProc, offset WndProcmov wc.cbClsExtra, NULLmov wc.cbWndExtra, NULLm2m wc.hInstance, hInstmov wc.hbrBackground, COLOR_BTNFACE+1mov wc.lpszMenuName, NULLmov wc.lpszClassName, offset szClassNamem2m wc.hIcon, hIconinvoke LoadCursor,NULL,IDC_ARROWmov wc.hCursor, eaxm2m wc.hIconSm, hIconinvoke RegisterClassEx, ADDR wc;================================; Centre window at following size;================================mov Wwd, 209 ; Dialog Widthmov Wht, 118 ; Dialog Heightinvoke GetSystemMetrics,SM_CXSCREENinvoke TopXY,Wwd,eaxmov Wtx, eaxinvoke GetSystemMetrics,SM_CYSCREENinvoke TopXY,Wht,eaxmov Wty, eaxinvoke CreateWindowEx,WS_EX_LEFT,ADDR szClassName,ADDR szDisplayName,WS_MINIMIZEBOX or WS_OVERLAPPED or WS_SYSMENU,Wtx,Wty,Wwd,Wht,NULL,NULL,hInst,NULLmov hWnd,eaxinvoke ShowWindow,hWnd,SW_SHOWNORMALinvoke UpdateWindow,hWnd;===================================; Loop until PostQuitMessage is sent;===================================StartLoop:invoke GetMessage,ADDR msg,NULL,0,0cmp eax, 0je ExitLoopinvoke TranslateMessage, ADDR msginvoke DispatchMessage, ADDR msgjmp StartLoopExitLoop:return msg.wParamWinMain endp; #########################################################################WndProc proc hWin :DWORD,uMsg :DWORD,wParam :DWORD,lParam :DWORDLOCAL var :DWORDLOCAL caW :DWORDLOCAL caH :DWORDLOCAL color :DWORDLOCAL hDC :DWORDLOCAL Rct :RECTLOCAL Ps :PAINTSTRUCTLOCAL buffer1[128]:BYTELOCAL buffer2[128]:BYTELOCAL lfnt :LOGFONTLOCAL psd :PAGESETUPDLGLOCAL pd :PRINTDLGLOCAL RectB :RECT.if uMsg == WM_COMMANDMOV EAX, wParam.if wParam == 499.endifmov ecx, hEmailmov edx, hWeb.if ecx == lParam || edx == lParam.if bMouseOvermov eax, Red.elsemov eax, Yellow.endifinvoke SetTextColor, wParam, eaxinvoke SetBkMode, wParam, TRANSPARENTmov eax, hBrush.endifret.elseif uMsg == WM_DRAWITEM.elseif uMsg == WM_CREATEMOV HotKeyMiniToggle, TRUEszText font1,'MS Sans Serif'invoke CreateFont,8,5,0,0,500,0,0,0, \DEFAULT_CHARSET,0,0,0,\DEFAULT_PITCH,ADDR font1mov hFont, eax ;##### Create 2 fonts invoke RtlZeroMemory, addr lfnt, sizeof LOGFONT ;##### Reg font mov lfnt.lfHeight, -11 mov lfnt.lfWeight, FW_NORMAL invoke szCatStr, addr lfnt.lfFaceName, offset font1 ;##### Bold font mov lfnt.lfUnderline, TRUE invoke CreateFontIndirect, addr lfnt mov hFontUl, eax;##### Web Hyperlinkinvoke CreateWindowEx,NULL,offset szWndClsStatic,offset szWebText,WS_CHILD or WS_VISIBLE or SS_NOTIFY,48,60,140, 17,hWin, 0,0, 0mov hWeb, eax;##### URL is dif than text, save URLinvoke SetWindowLong, eax, GWL_USERDATA, offset szWebURL;##### Subclass controlinvoke SetWindowLong, hWeb, GWL_WNDPROC, offset UrlProcmov lpOrgStaticProc, eaxinvoke SendMessage, hWeb, WM_SETFONT, hFont, FALSE;invoke GetSysColorBrush,COLOR_HIGHLIGHT ; COLOR_3DFACE;mov hBrush, eaxInvoke SetTimer, hWin, 1, 100, 0 ; HotKey TimerInvoke SetTimer, hWin, 2, 300, 0 ; EditBox Timer 1Invoke SetTimer, hWin, 3, 300, 0 ; EditBox Timer 2Invoke SetTimer, hWin, 4, 100, 0 ; EditBox Freeze Timer;szText lbl11, "?омашн¤¤ страница";invoke Static,ADDR lbl11,hWin,48,56,116,17,5500;mov LabelHandle5500, eaxszText lbl12, "Trainer for Game"invoke Static,ADDR lbl12,hWin,56,8,92,17,5501mov LabelHandle5501, eaxszText lbl13, "F12 - бесконечные патроны"invoke Static,ADDR lbl13,hWin,24,32,148,17,5502mov LabelHandle5502, eax.elseif uMsg == WM_TIMER.If wParam == 1 ; ### Timer Below ###Invoke GetKeyState, VK_HOMEmov HotBuffer1, eax.if HotBuffer1 > 1Invoke TrainerEngineRead, NULL, Offset WindCap, 001C0F965h, 1MOV Read, EAX.If Read == 001hInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00000, 4.ElseInvoke TrainerEngine, NULL, Offset WindCap, 001C0F965h, Offset HotKey00001, 4.EndIf.endif.Endif ; ### Timer Above ###.If wParam == 2 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 3 ; ### Timer Below ###.Endif ; ### Timer Above ###.If wParam == 4 ; ### EBFreeze Timer Below ###.Endif ; ### EBFreeze Timer Above ### .elseif uMsg==WM_CTLCOLORSTATIC mov ecx, hEmail mov edx, hWeb .if ecx == lParam || edx == lParam .if bMouseOver mov eax, Red .else mov eax, Yellow .endif invoke SetTextColor, wParam, eax invoke SetBkMode, wParam, TRANSPARENT mov eax, hBrush .endif ret.elseif uMsg == WM_HOTKEY.elseif uMsg == WM_PAINTinvoke BeginPaint,hWin,ADDR Psmov hDC, eaxinvoke Paint_Proc,hWin,hDCinvoke EndPaint,hWin,ADDR Psreturn 0.elseif uMsg == WM_DESTROYinvoke PostQuitMessage,NULLreturn 0.endifinvoke DefWindowProc,hWin,uMsg,wParam,lParamretWndProc endp; ########################################################################TopXY proc wDim:DWORD, sDim:DWORDshr sDim, 1 ; divide screen dimension by 2shr wDim, 1 ; divide window dimension by 2mov eax, wDim ; copy window dimension into eaxsub sDim, eax ; sub half win dimension from half screen dimensionreturn sDimTopXY endp; #########################################################################Paint_Proc proc hWin:DWORD, hDC:DWORDLOCAL btn_hi :DWORDLOCAL btn_lo :DWORDLOCAL Rct :RECTinvoke GetSysColor,COLOR_BTNHIGHLIGHTmov btn_hi, eaxinvoke GetSysColor,COLOR_BTNSHADOWmov btn_lo, eaxreturn 0Paint_Proc endp; ########################################################################OnDrawItem proc uses ebx idCtl:DWORD,pdis:DWORD,pcol:DWORD,pbkcol:DWORDLOCAL tbuff[20h]:bytemov ebx,pdisassume ebx:ptr DRAWITEMSTRUCT.if [ebx].CtlType == ODT_BUTTON.if pbkcol == 0.elseinvoke SetBkMode,[ebx].hdc,OPAQUEInvoke SetBkColor,[ebx].hdc,pbkcolInvoke CreateSolidBrush, pbkcolinvoke FillRect,[ebx].hdc,addr [ebx].rcItem,eax.endifinvoke SetTextColor,[ebx].hdc,pcol.if ([ebx].itemState & ODS_SELECTED)invoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,BDR_SUNKEN,BF_RECTinvoke OffsetRect,addr [ebx].rcItem,1,1.elseinvoke DrawEdge,[ebx].hdc,addr [ebx].rcItem,EDGE_RAISED,BF_RECT.endifinvoke GetWindowText,[ebx].hwndItem,addr tbuff,sizeof tbufflea edx,[ebx].rcItemlea ecx,tbuffinvoke DrawText,[ebx].hdc,ecx,eax,edx,DT_CENTER or DT_VCENTER or DT_SINGLELINE or DT_NOCLIP.if [ebx].itemState & ODS_FOCUSinvoke InflateRect,addr [ebx].rcItem,-4,-4invoke DrawFocusRect,[ebx].hdc,addr [ebx].rcItem.endif.endifassume ebx:nothingretOnDrawItem endp; ########################################################################UrlProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAMlocal rect:RECT mov eax,uMsg .if eax == WM_MOUSEMOVE invoke GetClientRect, hWin, addr rect invoke GetCapture ;##### Make sure the mouse is in our control .if eax != hWin mov bMouseOver, TRUE invoke SetCapture, hWin invoke SendMessage, hWin, WM_SETFONT, hFontUl, TRUE .endif mov edx,lParam movzx eax,dx shr edx,16 .if eax > rect.right || edx > rect.bottom ;##### moved out of control mov bMouseOver, FALSE invoke ReleaseCapture invoke SendMessage, hWin, WM_SETFONT, hFont, TRUE .endif .elseif eax == WM_LBUTTONUP mov bMouseOver, FALSE invoke ReleaseCapture invoke SendMessage, hWin, WM_SETFONT, hFont, TRUE ;##### Get URL we stored with the control invoke GetWindowLong, hWin, GWL_USERDATA invoke ShellExecute, hMain, offset szShelOpen, eax, NULL, NULL, SW_SHOWNORMAL .elseif eax==WM_SETCURSOR invoke LoadCursor, NULL, IDC_HAND invoke SetCursor, eax .else invoke CallWindowProc, lpOrgStaticProc, hWin, uMsg, wParam, lParam ret .endif xor eax,eax retUrlProc endpend start
- 1
-
вроде адекватный пример:
http://www.dreamincode.net/forums/topic/241669-masm-creating-a-hyperlink/
Я пишу не сам, за меня пишет Game Trainer Studio. А дальше я, по возможности, дорабатываю.
надо наоборот. взять тот код как пример, исправить бредокод +переписать его на fasm или nasm а потом добавлять функционал.
-
Спасибо. Только теперь придётся читать про новые для меня опкоды: shr, and, rep.
кст если размер "строки" известен, можно без shr/and
например размер инфы 9:
mov ecx,8 ;sizemov esi,string1mov edi,string2rep cmpsdmov ecx,1rep cmpsbjnz @f...@@:
-
cmps для больших строк:
mov ecx,5 ;sizemov edx,ecxmov esi,string1mov edi,string2shr ecx,2and edx,3rep cmpsdmov ecx,edxrep cmpsbjnz @f...@@:
cmps для небольших строк:
mov ecx,5 ;sizemov esi,string1mov edi,string2rep cmpsbjnz @f...@@:
хмм strcmp из msvcrt.dll быстрее cmps в ~2 раза
- 2
-
почти. так на С повтори:
invoke GlobalAlloc,0,24mov esi,eaxcinvoke wcscpy,esi,blahinvoke OpenClipboard,0invoke EmptyClipboardinvoke SetClipboardData,CF_UNICODETEXT,esiinvoke CloseClipboardinvoke GlobalFree,esi....blah du 'qweqwe11212',0
-
зовешь GlobalAlloc,GMEM_ZEROINIT,размер_текста+1
копируешь туда текст
SetClipboardData тот буфер
ps вместо GMEM_ZEROINIT можешь поставить 0
Отладичк и НЕХ-Редактор - Почему есть отличие...и как это исправить.
in Игрострой и отладка
Опубликовано · Изменено пользователем gmz
все проще...
0x00400000 BASE
0x0097CEFC VA (0x0057CEFC+0x00400000)
0x0057CEFC RVA (0x0097CEFC-0x00400000)
0x0057C2FC RAW (0x0057CEFC-0x00001000+0x00000400)
0x00001000 Section Virtual Address
0x00000400 Section Raw Address
возьми CFFExplorer.exe и сам посчитай xD