Reverse Engineering for Beginners

(avery) #1

CHAPTER 53. WINDOWS 16-BIT CHAPTER 53. WINDOWS 16-BIT


if (*s1==0 || *s2==0)
return 1; // end of string
s1++;
s2++;
};

};


int PASCAL string_compare_far (char far s1, char far s2)
{
while (1)
{
if (s1!=s2)
return 0;
if (s1==0 || s2==0)
return 1; // end of string
s1++;
s2++;
};


};


void PASCAL remove_digits (char s)
{
while (
s)
{
if (s>='0' && s<='9')
*s='-';
s++;
};
};


char str[]="hello 1234 world";


int PASCAL WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
string_compare ("asd", "def");
string_compare_far ("asd", "def");
remove_digits (str);
MessageBox (NULL, str, "caption", MB_YESNOCANCEL);
return 0;
};


string_compare proc near


arg_0 = word ptr 4
arg_2 = word ptr 6


push bp
mov bp, sp
push si
mov si, [bp+arg_0]
mov bx, [bp+arg_2]

loc_12: ; CODE XREF: string_compare+21j
mov al, [bx]
cmp al, [si]
jz short loc_1C
xor ax, ax
jmp short loc_2B


loc_1C: ; CODE XREF: string_compare+Ej
test al, al
jz short loc_22
jnz short loc_27

Free download pdf