Фев 142012
 

Так как VkObmen наконец-то ввел проверку премиума на сервере, выкладываю исходники Loaderа для версии 3.3. Сейчас толка в них нету, причина написана выше. Выкладываю, чтобы глянули способ патчинга и обхода Themidы (которой был накрыт обмен на тот момент).

.486 
.model flat, stdcall
option casemap :none 
 
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
 
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
 
 
.data
Space                   db " ",0
App db "Error",0 
Err1 db " not found",0
App2 db "(3.3) Loader by bafoed (ASM)",0
Err2 db "Патчинг успешно завершен :)",0 
 
prog db "VkObmen.exe",0
va1 DWORD 5753576
va2 DWORD 5753577
va3 DWORD 5753683
va4 DWORD 5753684
 
bufwr1 DWORD 144
bufwr2 DWORD 144
bufwr3 DWORD 144
bufwr4 DWORD 144
 
.data?
Buffer dd 1024 dup (?)
B1 dd 1024 dup (?)
B2 dd 1024 dup (?)
B3 dd 1024 dup (?)
B4 dd 1024 dup (?)
B5 dd 1024 dup (?)
bufr dw ?
pinfo PROCESS_INFORMATION <> 
sinfo STARTUPINFO <> 
n DWORD ? 
.code
 
start: 
 
 
invoke GetCL, 1, ADDR B1
invoke GetCL, 2, ADDR B2
invoke GetCL, 3, ADDR B3
invoke GetCL, 4, ADDR B4
invoke GetCL, 5, ADDR B5
INVOKE lstrcat, ADDR Buffer, Addr prog
INVOKE lstrcat, ADDR Buffer, Addr Space
INVOKE lstrcat, ADDR Buffer, Addr B1
INVOKE lstrcat, ADDR Buffer, Addr Space
INVOKE lstrcat, ADDR Buffer, Addr B2
INVOKE lstrcat, ADDR Buffer, Addr Space
INVOKE lstrcat, ADDR Buffer, Addr B3
INVOKE lstrcat, ADDR Buffer, Addr Space
INVOKE lstrcat, ADDR Buffer, Addr B4
INVOKE lstrcat, ADDR Buffer, Addr Space
INVOKE lstrcat, ADDR Buffer, Addr B5
invoke CreateProcess,NULL, ADDR Buffer, NULL, 
NULL, TRUE, NULL, NULL, NULL,addr sinfo,addr pinfo 
.IF eax == 0 
mov Buffer, " "
INVOKE lstrcat, ADDR Buffer, Addr prog 
INVOKE lstrcat, ADDR Buffer, Addr Err1 
 
invoke MessageBox,NULL,addr Buffer,addr App,MB_ICONERROR
invoke ExitProcess,0
.ENDIF
.WHILE TRUE 
invoke ReadProcessMemory,pinfo.hProcess,va1,addr bufr,1,n
.IF eax != 0 
.IF bufr != 00h 
 
 
 
invoke SuspendThread,addr pinfo.hThread
 
invoke WriteProcessMemory,pinfo.hProcess,va1,addr bufwr1,1,n
invoke WriteProcessMemory,pinfo.hProcess,va2,addr bufwr2,1,n
invoke WriteProcessMemory,pinfo.hProcess,va3,addr bufwr3,1,n
invoke WriteProcessMemory,pinfo.hProcess,va4,addr bufwr4,1,n
 
invoke ResumeThread,addr pinfo.hThread 
invoke CloseHandle,pinfo.hThread 
invoke MessageBox,NULL,addr Err2,addr App2,MB_ICONINFORMATION
invoke ExitProcess,0 
.ENDIF
.ENDIF
.ENDW
 
end start
Ноя 292011
 

Одну из первой статей этого блога я хочу посвятить реверсингу.

После этого поста мне в личку сразу повалило куча мессаг с просьбами (а иногда и требованиями :D) отдать крякнутую версию. Я не привык раздавать готовое, поэтому софт собственно никто не получил. Часть этого народа забило, часть захотело крякать, хотя надо сказать, что это не так и просто. Continue reading »