Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

CrackingProgram: Difference between revisions

From ZeroWiki
imported>Unknown
No edit summary
 
(Repair batch-0001 pages from live compare)
 
Line 1: Line 1:
7/26일 두번째로 발표한 주제입니다
7/26일 두번째로 발표한 주제입니다
발표자료 : [[:File:CrackingProgram.ppt|CrackingProgram.ppt]]
발표자료 : CrackingProgram.ppt


== 간단한 프로그램 ==
== 간단한 프로그램 ==
Line 38: Line 38:
  00401037  push        esi
  00401037  push        esi
  00401038  push        edi
  00401038  push        edi
  00401039  lea        edi,[ebp-4Ch]
  00401039  lea        edi,[ebp-4Ch]
  0040103C  mov        ecx,13h
  0040103C  mov        ecx,13h
  00401041  mov        eax,0CCCCCCCCh
  00401041  mov        eax,0CCCCCCCCh
  00401046  rep stos    dword ptr [edi]
  00401046  rep stos    dword ptr [edi]
  8:        int a, b, c;
  8:        int a, b, c;
  9:        a = 1;
  9:        a = 1;
  00401048  mov        dword ptr [ebp-4],1
  00401048  mov        dword ptr [ebp-4],1
  10:      b = 2;
  10:      b = 2;
  0040104F  mov        dword ptr [ebp-8],2
  0040104F  mov        dword ptr [ebp-8],2
  11:      c = add(a, b);
  11:      c = add(a, b);
  00401056  mov        eax,dword ptr [ebp-8]
  00401056  mov        eax,dword ptr [ebp-8]
  00401059  push        eax
  00401059  push        eax
  0040105A  mov        ecx,dword ptr [ebp-4]
  0040105A  mov        ecx,dword ptr [ebp-4]
  0040105D  push        ecx
  0040105D  push        ecx
  0040105E  call        @ILT+0(add) (00401005)
  0040105E  call        @ILT+0(add) (00401005)
  00401063  add        esp,8
  00401063  add        esp,8
  00401066  mov        dword ptr [ebp-0Ch],eax
  00401066  mov        dword ptr [ebp-0Ch],eax
  12:
  12:
  13:      return 0;
  13:      return 0;
Line 78: Line 78:
  00401097  push        esi
  00401097  push        esi
  00401098  push        edi
  00401098  push        edi
  00401099  lea        edi,[ebp-44h]
  00401099  lea        edi,[ebp-44h]
  0040109C  mov        ecx,11h
  0040109C  mov        ecx,11h
  004010A1  mov        eax,0CCCCCCCCh
  004010A1  mov        eax,0CCCCCCCCh
  004010A6  rep stos    dword ptr [edi]
  004010A6  rep stos    dword ptr [edi]
  18:      int c;
  18:      int c;
  19:      c = a + b;
  19:      c = a + b;
  004010A8  mov        eax,dword ptr [ebp+8]
  004010A8  mov        eax,dword ptr [ebp+8]
  004010AB  add        eax,dword ptr [ebp+0Ch]
  004010AB  add        eax,dword ptr [ebp+0Ch]
  004010AE  mov        dword ptr [ebp-4],eax
  004010AE  mov        dword ptr [ebp-4],eax
  20:      return c;
  20:      return c;
  004010B1  mov        eax,dword ptr [ebp-4]
  004010B1  mov        eax,dword ptr [ebp-4]
  21:  }
  21:  }
  004010B4  pop        edi
  004010B4  pop        edi
Line 103: Line 103:
  void main()
  void main()
  {
  {
  char pass[8];
  char pass[8];
  cout << "input password : ";
  cout << "input password : ";
  cin >> pass;
  cin >> pass;
Line 123: Line 123:
  00401347  push        esi
  00401347  push        esi
  00401348  push        edi
  00401348  push        edi
  00401349  lea        edi,[ebp-48h]
  00401349  lea        edi,[ebp-48h]
  0040134C  mov        ecx,12h
  0040134C  mov        ecx,12h
  00401351  mov        eax,0CCCCCCCCh
  00401351  mov        eax,0CCCCCCCCh
  00401356  rep stos    dword ptr [edi]
  00401356  rep stos    dword ptr [edi]
  6:        char pass[8];
  6:        char pass[8];
  7:        cout << "input password : ";
  7:        cout << "input password : ";
  00401358  push        offset string "input password : " (0046c048)
  00401358  push        offset string "input password : " (0046c048)
Line 134: Line 134:
  00401367  add        esp,8
  00401367  add        esp,8
  8:        cin >> pass;
  8:        cin >> pass;
  0040136A  lea        eax,[ebp-8]
  0040136A  lea        eax,[ebp-8]
  0040136D  push        eax
  0040136D  push        eax
  0040136E  push        offset std::cin (00479f18)
  0040136E  push        offset std::cin (00479f18)
Line 141: Line 141:
  9:        if (!strcmp(pass, "12345"))
  9:        if (!strcmp(pass, "12345"))
  0040137B  push        offset string "12345" (0046c040)
  0040137B  push        offset string "12345" (0046c040)
  00401380  lea        ecx,[ebp-8]
  00401380  lea        ecx,[ebp-8]
  00401383  push        ecx
  00401383  push        ecx
  00401384  call        strcmp (0041f9e0)
  00401384  call        strcmp (0041f9e0)
Line 181: Line 181:
----
----
[[세미나/2004]]
[[세미나/2004]]

Latest revision as of 23:56, 26 March 2026

7/26일 두번째로 발표한 주제입니다 발표자료 : CrackingProgram.ppt

간단한 프로그램

#include <iostream> 
using namespace std; 

int add(int a, int b);

int main()
{
	int a, b, c;
	a = 1;
	b = 2;
	c = add(a, b);

	return 0;
}

int add(int a, int b)
{
	int c;
	c = a + b;
	return c;
}
1:    #include <iostream>
2:    using namespace std;
3:
4:    int add(int a, int b);
5:
6:    int main()
7:    {
00401030   push        ebp
00401031   mov         ebp,esp
00401033   sub         esp,4Ch
00401036   push        ebx
00401037   push        esi
00401038   push        edi
00401039   lea         edi,[ebp-4Ch]
0040103C   mov         ecx,13h
00401041   mov         eax,0CCCCCCCCh
00401046   rep stos    dword ptr [edi]
8:        int a, b, c;
9:        a = 1;
00401048   mov         dword ptr [ebp-4],1
10:       b = 2;
0040104F   mov         dword ptr [ebp-8],2
11:       c = add(a, b);
00401056   mov         eax,dword ptr [ebp-8]
00401059   push        eax
0040105A   mov         ecx,dword ptr [ebp-4]
0040105D   push        ecx
0040105E   call        @ILT+0(add) (00401005)
00401063   add         esp,8
00401066   mov         dword ptr [ebp-0Ch],eax
12:
13:       return 0;
00401069   xor         eax,eax
14:   }
0040106B   pop         edi
0040106C   pop         esi
0040106D   pop         ebx
0040106E   add         esp,4Ch
00401071   cmp         ebp,esp
00401073   call        __chkesp (004081a0)
00401078   mov         esp,ebp
0040107A   pop         ebp
0040107B   ret
----------------------------------------------------------------------------------
15:
16:   int add(int a, int b)
17:   {
00401090   push        ebp
00401091   mov         ebp,esp
00401093   sub         esp,44h
00401096   push        ebx
00401097   push        esi
00401098   push        edi
00401099   lea         edi,[ebp-44h]
0040109C   mov         ecx,11h
004010A1   mov         eax,0CCCCCCCCh
004010A6   rep stos    dword ptr [edi]
18:       int c;
19:       c = a + b;
004010A8   mov         eax,dword ptr [ebp+8]
004010AB   add         eax,dword ptr [ebp+0Ch]
004010AE   mov         dword ptr [ebp-4],eax
20:       return c;
004010B1   mov         eax,dword ptr [ebp-4]
21:   }
004010B4   pop         edi
004010B5   pop         esi
004010B6   pop         ebx
004010B7   mov         esp,ebp
004010B9   pop         ebp
004010BA   ret

간단한 암호입력 프로그램

#include <iostream>
using namespace std;

void main()
{
	char pass[8];
	cout << "input password : ";
	cin >> pass;
	if (!strcmp(pass, "12345"))
		cout << "correct passwd" << endl;
	else
		cout << "wrong passwd" << endl;
}
1:    #include <iostream>
2:    using namespace std;
3:
4:    void main()
5:    {
00401340   push        ebp
00401341   mov         ebp,esp
00401343   sub         esp,48h
00401346   push        ebx
00401347   push        esi
00401348   push        edi
00401349   lea         edi,[ebp-48h]
0040134C   mov         ecx,12h
00401351   mov         eax,0CCCCCCCCh
00401356   rep stos    dword ptr [edi]
6:        char pass[8];
7:        cout << "input password : ";
00401358   push        offset string "input password : " (0046c048)
0040135D   push        offset std::cout (00479e88)
00401362   call        @ILT+370(std::operator<<) (00401177)
00401367   add         esp,8
8:        cin >> pass;
0040136A   lea         eax,[ebp-8]
0040136D   push        eax
0040136E   push        offset std::cin (00479f18)
00401373   call        @ILT+55(std::operator>>) (0040103c)
00401378   add         esp,8
9:        if (!strcmp(pass, "12345"))
0040137B   push        offset string "12345" (0046c040)
00401380   lea         ecx,[ebp-8]
00401383   push        ecx
00401384   call        strcmp (0041f9e0)
00401389   add         esp,8
0040138C   test        eax,eax
0040138E   jne         main+70h (004013b0)
10:           cout << "correct passwd" << endl;
00401390   push        offset @ILT+120(std::endl) (0040107d)
00401395   push        offset string "correct passwd" (0046c02c)
0040139A   push        offset std::cout (00479e88)
0040139F   call        @ILT+370(std::operator<<) (00401177)
004013A4   add         esp,8
004013A7   mov         ecx,eax
004013A9   call        @ILT+295(std::basic_ostream<char,std::char_traits<char> >::operator<<) (0040112c)
11:       else
004013AE   jmp         main+8Eh (004013ce)
12:           cout << "wrong passwd" << endl;
004013B0   push        offset @ILT+120(std::endl) (0040107d)
004013B5   push        offset string "wrong passwd" (0046c01c)
004013BA   push        offset std::cout (00479e88)
004013BF   call        @ILT+370(std::operator<<) (00401177)
004013C4   add         esp,8
004013C7   mov         ecx,eax
004013C9   call        @ILT+295(std::basic_ostream<char,std::char_traits<char> >::operator<<) (0040112c)
13:   }
004013CE   pop         edi
004013CF   pop         esi
004013D0   pop         ebx
004013D1   add         esp,48h
004013D4   cmp         ebp,esp
004013D6   call        __chkesp (0041fa70)
004013DB   mov         esp,ebp
004013DD   pop         ebp
004013DE   ret

관련링크

Ollydbg codeDiver


세미나/2004