Witam,
Nie miałem nigdy do czynienia z ASM-em, jednakże musze zmienić w nim pewną rzecz. Oczywiście jest to sprawa typu reverse engineering przy pomocy IDA, a potem ew. Hex Editora.
sub_41A280 proc near
var_20= dword ptr -20h
var_1C= dword ptr -1Ch
var_C= dword ptr -0Ch
var_4= dword ptr -4
arg_0= byte ptr 8
arg_4= dword ptr 0Ch
arg_8= dword ptr 10h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset unknown_libname_110 ; Microsoft VisualC 2-8/net runtime
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 14h
mov [ebp+var_20], ecx
lea ecx, [ebp+var_1C]
call sub_4026C0
mov [ebp+var_4], 0
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, dword ptr [ebp+arg_0]
push edx ; char
push offset aInsertIntoPkbu ; "INSERT INTO PKBulletin VALUES ( '%s', '"...
lea eax, [ebp+var_1C]
push eax ; int
call sub_402730
add esp, 14h
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+var_1C]
call sub_4026F0
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 0Ch
sub_41A280 endp
Jest to kod, a w zasadzie chyba funkcja odpowiedzialna za dodawanie pewnych danych do bazy MSSQL.
Nie rozumiem o co tu biega, aczkolwiek mam pare pytań.
- Gdzie są przypisane parametry jakie funkcja otrzyma podczas wywołania?
sub_41A280 proc near
push offset aInsertIntoPkbu
Ten kod jak mi sie wydaje wywołuje zapytanie do bazy (u mnie MSSQL).
Jednak zapytanie ma postać: 'INSERT INTO PKBulletin VALUES ( ',27h,'%s',27h,', ',27h,'%s',27h,', ',27h,'%s',27h,')'
Tabela ma 3 pola, wiec jak mi sie wydaje %s to gdzie zmienna string zostanie wstawiona, a 27h to jakies przerwanie od wypisania tekstu?
- Gdzie kod:
push offset aInsertIntoPkbu
Otrzymuje zmienne do przekazania do tego zapytania?
Wybaczcie jeśli coś nazmyślałem, pierwszy raz na oczy widze takie ślaczki.