• crackme itoa atoi 等函数汇编


    #include "stdafx.h"
    #include <Windows.h>
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	char name[50] = "abcdef";
    	int sum =1,sum2;
    	for (int i=0;i<strlen(name);i++)
    	{
    		sum*= name[i];
    	}
    	char name2[50];
    	itoa(sum,name2,10);
    	/*
    	005177F4  /$  8BFF          mov edi,edi
    	005177F6  |.  55            push ebp
    	005177F7  |.  8BEC          mov ebp,esp
    	005177F9  |.  837D 10 0A    cmp [arg.3],0xA
    	005177FD  |.  8B45 08       mov eax,[arg.1]
    	00517800  |.  75 0A         jnz Xcrackme5.0051780C
    	00517802  |.  85C0          test eax,eax
    	00517804  |.  79 06         jns Xcrackme5.0051780C
    	00517806  |.  6A 01         push 0x1
    	00517808  |.  6A 0A         push 0xA
    	0051780A  |.  EB 05         jmp Xcrackme5.00517811
    	0051780C  |>  6A 00         push 0x0
    	0051780E  |.  FF75 10       push [arg.3]
    	00517811  |>  8B4D 0C       mov ecx,[arg.2]
    	00517814  |.  E8 98FFFFFF   call crackme5.005177B1  /////////////////后
    	00517819  |.  8B45 0C       mov eax,[arg.2]
    	0051781C  |.  5D            pop ebp
    	0051781D  .  C3            retn
    
    	005177B1  /$  8BFF          mov edi,edi
    	005177B3  |.  55            push ebp
    	005177B4  |.  8BEC          mov ebp,esp
    	005177B6  |.  837D 0C 00    cmp [arg.2],0x0
    	005177BA  |.  74 06         je Xcrackme5.005177C2
    	005177BC  |.  C601 2D       mov byte ptr ds:[ecx],0x2D
    	005177BF  |.  41            inc ecx
    	005177C0  |.  F7D8          neg eax
    	005177C2  |>  56            push esi                                 ;  ``````````````
    	005177C3  |.  8BF1          mov esi,ecx
    	005177C5  |>  33D2          /xor edx,edx
    	005177C7  |.  F775 08       |div [arg.1]
    	005177CA  |.  83FA 09       |cmp edx,0x9
    	005177CD  |.  76 05         |jbe Xcrackme5.005177D4
    	005177CF  |.  80C2 57       |add dl,0x57
    	005177D2  |.  EB 03         |jmp Xcrackme5.005177D7
    	005177D4  |>  80C2 30       |add dl,0x30
    	005177D7  |>  8811          |mov byte ptr ds:[ecx],dl                ;  guan
    	005177D9  |.  41            |inc ecx
    	005177DA  |.  85C0          |test eax,eax
    	005177DC  |.^ 75 E7         jnz Xcrackme5.005177C5
    	005177DE  |.  8801          mov byte ptr ds:[ecx],al
    	005177E0  |.  49            dec ecx
    	005177E1  |>  8A16          mov dl,byte ptr ds:[esi]
    	005177E3  |.  8A01          mov al,byte ptr ds:[ecx]
    	005177E5  |.  8811          mov byte ptr ds:[ecx],dl
    	005177E7  |.  49            dec ecx
    	005177E8  |.  8806          mov byte ptr ds:[esi],al
    	005177EA  |.  46            inc esi
    	005177EB  |.  3BF1          cmp esi,ecx
    	005177ED  |.^ 72 F2         jb Xcrackme5.005177E1
    	005177EF  |.  5E            pop esi
    	005177F0  |.  5D            pop ebp
    	005177F1  .  C2 0800       retn 0x8
    	*/
    	int i=0,j=strlen(name2);
    	char c;
    	while (i<j)
    	{
    		c = name2[i];
    		name2[i] = name2[j-1];
    		name2[j-1] = c;
    		i++;
    		j--;
    	}
    	/*
    	0040200E  |.  8BFF          mov edi,edi
    	00402010  |>  8A5C05 C8     /mov bl,byte ptr ss:[ebp+eax-0x38]
    	00402014  |.  8A540D C8     |mov dl,byte ptr ss:[ebp+ecx-0x38]
    	00402018  |.  885C0D C8     |mov byte ptr ss:[ebp+ecx-0x38],bl
    	0040201C  |.  885405 C8     |mov byte ptr ss:[ebp+eax-0x38],dl
    	00402020  |.  41            |inc ecx
    	00402021  |.  48            |dec eax
    	00402022  |.  3BC8          |cmp ecx,eax
    	00402024  |.^ 7C EA         jl Xcrackme5.00402010
    	*/
    
    	sum2 = atoi(name2);
    	/*
    	00506476  /$  8BFF          mov edi,edi
    	00506478  |.  55            push ebp
    	00506479  |.  8BEC          mov ebp,esp
    	0050647B  |.  83EC 1C       sub esp,0x1C
    	0050647E  |.  56            push esi
    	0050647F  |.  FF75 08       push [arg.1]
    	00506482  |.  8D4D E4       lea ecx,[local.7]
    	00506485  |.  E8 F0AAFFFF   call crackme5.00500F7A
    	0050648A  |.  8B45 10       mov eax,[arg.3]
    	0050648D  |.  8B75 0C       mov esi,[arg.2]
    	00506490  |.  85C0          test eax,eax
    	00506492  |.  74 02         je Xcrackme5.00506496
    	00506494  |.  8930          mov dword ptr ds:[eax],esi
    	00506496  |>  85F6          test esi,esi
    	00506498  |.  75 24         jnz Xcrackme5.005064BE
    	0050649A  |>  E8 AFD2FFFF   call crackme5.0050374E
    	0050649F  |.  C700 16000000 mov dword ptr ds:[eax],0x16
    	005064A5  |.  E8 8F350000   call crackme5.00509A39
    	005064AA  |.  807D F0 00    cmp byte ptr ss:[ebp-0x10],0x0
    	005064AE  |.  74 07         je Xcrackme5.005064B7
    	005064B0  |.  8B45 EC       mov eax,[local.5]
    	005064B3  |.  8360 70 FD    and dword ptr ds:[eax+0x70],0xFFFFFFFD
    	005064B7  |>  33C0          xor eax,eax
    	005064B9  |.  E9 E0010000   jmp crackme5.0050669E
    	005064BE  |>  837D 14 00    cmp [arg.4],0x0
    	005064C2  |.  74 0C         je Xcrackme5.005064D0
    	005064C4  |.  837D 14 02    cmp [arg.4],0x2
    	005064C8  |.^ 7C D0         jl Xcrackme5.0050649A
    	005064CA  |.  837D 14 24    cmp [arg.4],0x24
    	005064CE  |.^ 7F CA         jg Xcrackme5.0050649A
    	005064D0  |>  8365 FC 00    and [local.1],0x0
    	005064D4  |.  8B4D E4       mov ecx,[local.7]
    	005064D7  |.  53            push ebx
    	005064D8  |.  8A1E          mov bl,byte ptr ds:[esi]
    	005064DA  |.  57            push edi
    	005064DB  |.  8D7E 01       lea edi,dword ptr ds:[esi+0x1]
    	005064DE  |>  83B9 AC000000>/cmp dword ptr ds:[ecx+0xAC],0x1
    	005064E5  |.  7E 17         |jle Xcrackme5.005064FE
    	005064E7  |.  8D45 E4       |lea eax,[local.7]
    	005064EA  |.  50            |push eax
    	005064EB  |.  0FB6C3        |movzx eax,bl
    	005064EE  |.  6A 08         |push 0x8
    	005064F0  |.  50            |push eax
    	005064F1  |.  E8 C0450000   |call crackme5.0050AAB6
    	005064F6  |.  8B4D E4       |mov ecx,[local.7]
    	005064F9  |.  83C4 0C       |add esp,0xC
    	005064FC  |.  EB 10         |jmp Xcrackme5.0050650E
    	005064FE  |>  8B91 C8000000 |mov edx,dword ptr ds:[ecx+0xC8]
    	00506504  |.  0FB6C3        |movzx eax,bl
    	00506507  |.  0FB70442      |movzx eax,word ptr ds:[edx+eax*2]
    	0050650B  |.  83E0 08       |and eax,0x8
    	0050650E  |>  85C0          |test eax,eax
    	00506510  |.  74 05         |je Xcrackme5.00506517
    	00506512  |.  8A1F          |mov bl,byte ptr ds:[edi]
    	00506514  |.  47            |inc edi
    	00506515  |.^ EB C7         jmp Xcrackme5.005064DE
    	00506517  |>  80FB 2D       cmp bl,0x2D                              ;  diyige
    	0050651A  |.  75 06         jnz Xcrackme5.00506522
    	0050651C  |.  834D 18 02    or [arg.5],0x2
    	00506520  |.  EB 05         jmp Xcrackme5.00506527
    	00506522  |>  80FB 2B       cmp bl,0x2B                              ;  +
    	00506525  |.  75 03         jnz Xcrackme5.0050652A
    	00506527  |>  8A1F          mov bl,byte ptr ds:[edi]
    	00506529  |.  47            inc edi
    	0050652A  |>  8B45 14       mov eax,[arg.4]
    	0050652D  |.  85C0          test eax,eax
    	0050652F  |.  0F88 4F010000 js crackme5.00506684
    	00506535  |.  83F8 01       cmp eax,0x1                              ;  1-0x24
    	00506538  |.  0F84 46010000 je crackme5.00506684
    	0050653E  |.  83F8 24       cmp eax,0x24
    	00506541  |.  0F8F 3D010000 jg crackme5.00506684
    	00506547  |.  85C0          test eax,eax
    	00506549  |.  75 2A         jnz Xcrackme5.00506575
    	0050654B  |.  80FB 30       cmp bl,0x30
    	0050654E  |.  74 09         je Xcrackme5.00506559
    	00506550  |.  C745 14 0A000>mov [arg.4],0xA
    	00506557  |.  EB 36         jmp Xcrackme5.0050658F
    	00506559  |>  8A07          mov al,byte ptr ds:[edi]
    	0050655B  |.  3C 78         cmp al,0x78
    	0050655D  |.  74 0D         je Xcrackme5.0050656C
    	0050655F  |.  3C 58         cmp al,0x58
    	00506561  |.  74 09         je Xcrackme5.0050656C
    	00506563  |.  C745 14 08000>mov [arg.4],0x8
    	0050656A  |.  EB 23         jmp Xcrackme5.0050658F
    	0050656C  |>  C745 14 10000>mov [arg.4],0x10
    	00506573  |.  EB 0A         jmp Xcrackme5.0050657F
    	00506575  |>  83F8 10       cmp eax,0x10
    	00506578  |.  75 15         jnz Xcrackme5.0050658F
    	0050657A  |.  80FB 30       cmp bl,0x30
    	0050657D  |.  75 10         jnz Xcrackme5.0050658F
    	0050657F  |>  8A07          mov al,byte ptr ds:[edi]
    	00506581  |.  3C 78         cmp al,0x78
    	00506583  |.  74 04         je Xcrackme5.00506589
    	00506585  |.  3C 58         cmp al,0x58
    	00506587  |.  75 06         jnz Xcrackme5.0050658F
    	00506589  |>  8A5F 01       mov bl,byte ptr ds:[edi+0x1]
    	0050658C  |.  83C7 02       add edi,0x2
    	0050658F  |>  83C8 FF       or eax,0xFFFFFFFF                        ;  ``````````
    	00506592  |.  33D2          xor edx,edx
    	00506594  |.  F775 14       div [arg.4]                              ;  A
    	00506597  |.  8BB1 C8000000 mov esi,dword ptr ds:[ecx+0xC8]
    	0050659D  |.  8955 F8       mov [local.2],edx
    	005065A0  |>  0FB6CB        /movzx ecx,bl
    	005065A3  |.  0FB70C4E      |movzx ecx,word ptr ds:[esi+ecx*2]
    	005065A7  |.  8BD1          |mov edx,ecx
    	005065A9  |.  83E2 04       |and edx,0x4
    	005065AC  |.  74 08         |je Xcrackme5.005065B6
    	005065AE  |.  0FBECB        |movsx ecx,bl
    	005065B1  |.  83E9 30       |sub ecx,0x30
    	005065B4  |.  EB 19         |jmp Xcrackme5.005065CF
    	005065B6  |>  81E1 03010000 |and ecx,0x103
    	005065BC  |.  74 30         |je Xcrackme5.005065EE
    	005065BE  |.  8D4B 9F       |lea ecx,dword ptr ds:[ebx-0x61]
    	005065C1  |.  80F9 19       |cmp cl,0x19
    	005065C4  |.  0FBECB        |movsx ecx,bl
    	005065C7  |.  77 03         |ja Xcrackme5.005065CC
    	005065C9  |.  83E9 20       |sub ecx,0x20
    	005065CC  |>  83C1 C9       |add ecx,-0x37
    	005065CF  |>  3B4D 14       |cmp ecx,[arg.4]
    	005065D2  |.  73 1A         |jnb Xcrackme5.005065EE
    	005065D4  |.  834D 18 08    |or [arg.5],0x8
    	005065D8  |.  3945 FC       |cmp [local.1],eax
    	005065DB  |.  72 28         |jb Xcrackme5.00506605
    	005065DD  |.  75 05         |jnz Xcrackme5.005065E4
    	005065DF  |.  3B4D F8       |cmp ecx,[local.2]
    	005065E2  |.  76 21         |jbe Xcrackme5.00506605
    	005065E4  |>  834D 18 04    |or [arg.5],0x4
    	005065E8  |.  837D 10 00    |cmp [arg.3],0x0
    	005065EC  |.  75 23         |jnz Xcrackme5.00506611
    	005065EE  |>  8B45 18       |mov eax,[arg.5]
    	005065F1  |.  4F            |dec edi
    	005065F2  |.  A8 08         |test al,0x8
    	005065F4  |.  75 20         |jnz Xcrackme5.00506616
    	005065F6  |.  837D 10 00    |cmp [arg.3],0x0
    	005065FA  |.  74 03         |je Xcrackme5.005065FF
    	005065FC  |.  8B7D 0C       |mov edi,[arg.2]
    	005065FF  |>  8365 FC 00    |and [local.1],0x0
    	00506603  |.  EB 5B         |jmp Xcrackme5.00506660
    	00506605  |>  8B55 FC       |mov edx,[local.1]
    	00506608  |.  0FAF55 14     |imul edx,[arg.4]
    	0050660C  |.  03D1          |add edx,ecx
    	0050660E  |.  8955 FC       |mov [local.1],edx
    	00506611  |>  8A1F          |mov bl,byte ptr ds:[edi]
    	00506613  |.  47            |inc edi
    	00506614  |.^ EB 8A         jmp Xcrackme5.005065A0
    	00506616  |>  BE FFFFFF7F   mov esi,0x7FFFFFFF
    	0050661B  |.  A8 04         test al,0x4
    	0050661D  |.  75 1B         jnz Xcrackme5.0050663A
    	0050661F  |.  A8 01         test al,0x1
    	00506621  |.  75 3D         jnz Xcrackme5.00506660
    	00506623  |.  83E0 02       and eax,0x2
    	00506626  |.  74 09         je Xcrackme5.00506631
    	00506628  |.  817D FC 00000>cmp [local.1],0x80000000
    	0050662F  |.  77 09         ja Xcrackme5.0050663A
    	00506631  |>  85C0          test eax,eax
    	00506633  |.  75 2B         jnz Xcrackme5.00506660
    	00506635  |.  3975 FC       cmp [local.1],esi
    	00506638  |.  76 26         jbe Xcrackme5.00506660
    	0050663A  |>  E8 0FD1FFFF   call crackme5.0050374E
    	0050663F  |.  F645 18 01    test byte ptr ss:[ebp+0x18],0x1
    	00506643  |.  C700 22000000 mov dword ptr ds:[eax],0x22
    	00506649  |.  74 06         je Xcrackme5.00506651
    	0050664B  |.  834D FC FF    or [local.1],0xFFFFFFFF
    	0050664F  |.  EB 0F         jmp Xcrackme5.00506660
    	00506651  |>  F645 18 02    test byte ptr ss:[ebp+0x18],0x2
    	00506655  |.  6A 00         push 0x0
    	00506657  |.  58            pop eax
    	00506658  |.  0F95C0        setne al
    	0050665B  |.  03C6          add eax,esi
    	0050665D  |.  8945 FC       mov [local.1],eax
    	00506660  |>  8B45 10       mov eax,[arg.3]
    	00506663  |.  85C0          test eax,eax
    	00506665  |.  74 02         je Xcrackme5.00506669
    	00506667  |.  8938          mov dword ptr ds:[eax],edi
    	00506669  |>  F645 18 02    test byte ptr ss:[ebp+0x18],0x2
    	0050666D  |.  74 03         je Xcrackme5.00506672
    	0050666F  |.  F75D FC       neg [local.1]
    	00506672  |>  807D F0 00    cmp byte ptr ss:[ebp-0x10],0x0
    	00506676  |.  74 07         je Xcrackme5.0050667F
    	00506678  |.  8B45 EC       mov eax,[local.5]
    	0050667B  |.  8360 70 FD    and dword ptr ds:[eax+0x70],0xFFFFFFFD
    	0050667F  |>  8B45 FC       mov eax,[local.1]
    	00506682  |.  EB 18         jmp Xcrackme5.0050669C
    	00506684  |>  8B45 10       mov eax,[arg.3]
    	00506687  |.  85C0          test eax,eax
    	00506689  |.  74 02         je Xcrackme5.0050668D
    	0050668B  |.  8930          mov dword ptr ds:[eax],esi
    	0050668D  |>  807D F0 00    cmp byte ptr ss:[ebp-0x10],0x0
    	00506691  |.  74 07         je Xcrackme5.0050669A
    	00506693  |.  8B45 EC       mov eax,[local.5]
    	00506696  |.  8360 70 FD    and dword ptr ds:[eax+0x70],0xFFFFFFFD
    	0050669A  |>  33C0          xor eax,eax
    	0050669C  |>  5F            pop edi
    	0050669D  |.  5B            pop ebx
    	0050669E  |>  5E            pop esi
    	0050669F  |.  C9            leave
    	005066A0  .  C3            retn
    	*/
    
    	sum += sum2;
    	itoa(sum,name,10);
    	sprintf(name2,"xdsec%s",name);
    	printf("%s",name2);
    
    	return 0;
    }

  • 相关阅读:
    集训第六周 O题
    集训第六周 M题
    集训第六周 矩阵快速幂 K题
    集训第六周 数学概念与方法 计数 排列 L题
    集训第六周 数学概念与方法 J题 数论,质因数分解
    集训第六周 数学概念与方法 数论 线性方程 I题
    集训第六周 数学概念与方法 概率 N题
    HUAS Summer Contest#4 D题 DP
    集训第六周 数学概念与方法 数论 筛素数 H题
    C语言之六大排序算法
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982433.html
Copyright © 2020-2023  润新知