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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值