吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3007|回复: 10

[原创逆向图文] Splish逆向

[复制链接]
lingyin 发表于 2018-12-31 16:37 | 显示全部楼层 |阅读模式




今天又练习了一个CrackMe,把我的学习过程记录一下。(大佬勿看,当然,给小弟点建议的话,本人愿闻其详)



这个程序名字是Splish,可能大家以前已经逆向过了,今天轮到我来PJ了


具体的思路如下:


Splish破解思路 (2).png


前两个步骤我以附件的形式上传,一个.doc  一个.pdf


在这,我们主要看它的算法部分:


[Asm] 纯文本查看 复制代码
004015E4  /$  55            push    ebp
004015E5  |.  8BEC          mov     ebp, esp
004015E7  |.  6A 20         push    20                               ; /Count = 20 (32.)
004015E9  |.  68 42324000   push    00403242                         ; |Buffer = SplishDe.00403242
004015EE  |.  FF75 0C       push    dword ptr [ebp+C]                ; |hWnd
004015F1  |.  E8 34010000   call    <jmp.&USER32.GetWindowTextA>     ; \GetWindowTextA
004015F6  |.  85C0          test    eax, eax                         ;  注册码是否为0
004015F8  |.  0F84 95000000 je      00401693
004015FE  |.  A3 67344000   mov     dword ptr [403467], eax          ;  len = strlen(注册码)
00401603  |.  6A 0B         push    0B                               ; /Count = B (11.)
00401605  |.  68 36324000   push    00403236                         ; |Buffer = SplishDe.00403236
0040160A  |.  FF75 08       push    dword ptr [ebp+8]                ; |hWnd
0040160D  |.  E8 18010000   call    <jmp.&USER32.GetWindowTextA>     ; \GetWindowTextA
00401612  |.  85C0          test    eax, eax                         ;  用户名是否为0
00401614  |.  74 68         je      short 0040167E
00401616  |.  A3 63344000   mov     dword ptr [403463], eax          ;  len_name
0040161B  |.  33C9          xor     ecx, ecx
0040161D  |.  33DB          xor     ebx, ebx                         ;  i = 0
0040161F  |.  33D2          xor     edx, edx                         ;  存放 余数 remain
00401621  |.  8D35 36324000 lea     esi, dword ptr [403236]          ;  esi 指向 用户名
00401627  |.  8D3D 58324000 lea     edi, dword ptr [403258]
0040162D  |.  B9 0A000000   mov     ecx, 0A
00401632  |>  0FBE041E      /movsx   eax, byte ptr [esi+ebx]
00401636  |.  99            |cdq
00401637  |.  F7F9          |idiv    ecx
00401639  |.  33D3          |xor     edx, ebx                        ;  remain ^ i
0040163B  |.  83C2 02       |add     edx, 2                          ;  remain = remain + 0x2
0040163E  |.  80FA 0A       |cmp     dl, 0A
00401641  |.  7C 03         |jl      short 00401646                  ;  小于 跳转
00401643  |.  80EA 0A       |sub     dl, 0A
00401646  |>  88141F        |mov     byte ptr [edi+ebx], dl          ;  值放入此处
00401649  |.  43            |inc     ebx
0040164A  |.  3B1D 63344000 |cmp     ebx, dword ptr [403463]
00401650  |.^ 75 E0         \jnz     short 00401632
00401652  |.  33C9          xor     ecx, ecx
00401654  |.  33DB          xor     ebx, ebx
00401656  |.  33D2          xor     edx, edx
00401658  |.  8D35 42324000 lea     esi, dword ptr [403242]          ;  esi 指向注册码
0040165E  |.  8D3D 4D324000 lea     edi, dword ptr [40324D]
00401664  |.  B9 0A000000   mov     ecx, 0A
00401669  |>  0FBE041E      /movsx   eax, byte ptr [esi+ebx]
0040166D  |.  99            |cdq
0040166E  |.  F7F9          |idiv    ecx
00401670  |.  88141F        |mov     byte ptr [edi+ebx], dl          ;  余数放入 此处
00401673  |.  43            |inc     ebx                             ;  i++
00401674  |.  3B1D 67344000 |cmp     ebx, dword ptr [403467]         ;  是否处理完毕
0040167A  |.^ 75 ED         \jnz     short 00401669
0040167C  |.  EB 2A         jmp     short 004016A8
0040167E  |>  6A 00         push    0                                ; /Style = MB_OK|MB_APPLMODAL
00401680  |.  68 0A304000   push    0040300A                         ; |Splish, Splash
00401685  |.  68 A0304000   push    004030A0                         ; |Please enter your name.
0040168A  |.  6A 00         push    0                                ; |hOwner = NULL
0040168C  |.  E8 B7000000   call    <jmp.&USER32.MessageBoxA>        ; \MessageBoxA
00401691  |.  EB 62         jmp     short 004016F5
00401693  |>  6A 00         push    0                                ; /Style = MB_OK|MB_APPLMODAL
00401695  |.  68 0A304000   push    0040300A                         ; |Splish, Splash
0040169A  |.  68 B8304000   push    004030B8                         ; |Please enter your serial number.
0040169F  |.  6A 00         push    0                                ; |hOwner = NULL
004016A1  |.  E8 A2000000   call    <jmp.&USER32.MessageBoxA>        ; \MessageBoxA
004016A6  |.  EB 4D         jmp     short 004016F5
004016A8  |>  8D35 4D324000 lea     esi, dword ptr [40324D]
004016AE  |.  8D3D 58324000 lea     edi, dword ptr [403258]
004016B4  |.  33DB          xor     ebx, ebx                         ;  j = 0
004016B6  |>  3B1D 63344000 /cmp     ebx, dword ptr [403463]         ;  是否循环完毕
004016BC  |.  74 0F         |je      short 004016CD                  ;  成功!!
004016BE  |.  0FBE041F      |movsx   eax, byte ptr [edi+ebx]
004016C2  |.  0FBE0C1E      |movsx   ecx, byte ptr [esi+ebx]
004016C6  |.  3BC1          |cmp     eax, ecx
004016C8  |.  75 18         |jnz     short 004016E2                  ;  失败!
004016CA  |.  43            |inc     ebx                             ;  j++
004016CB  |.^ EB E9         \jmp     short 004016B6
004016CD  |>  6A 00         push    0                                ; /Style = MB_OK|MB_APPLMODAL
004016CF  |.  68 0A304000   push    0040300A                         ; |Splish, Splash
004016D4  |.  68 42304000   push    00403042                         ; |Good job, now keygen it.
004016D9  |.  6A 00         push    0                                ; |hOwner = NULL
004016DB  |.  E8 68000000   call    <jmp.&USER32.MessageBoxA>        ; \MessageBoxA
004016E0  |.  EB 13         jmp     short 004016F5
004016E2  |>  6A 00         push    0                                ; /Style = MB_OK|MB_APPLMODAL
004016E4  |.  68 0A304000   push    0040300A                         ; |Splish, Splash
004016E9  |.  68 67304000   push    00403067                         ; |Sorry, please try again.
004016EE  |.  6A 00         push    0                                ; |hOwner = NULL
004016F0  |.  E8 53000000   call    <jmp.&USER32.MessageBoxA>        ; \MessageBoxA
004016F5  |>  C9            leave
004016F6  \.  C2 0800       retn    8




注册机代码如下:


[C] 纯文本查看 复制代码
#include<stdio.h>
#include<string.h>
int main()
{
	int i;
	char name[20];
	int k1 = 0;
	int len_name;
	
	printf("请输入用户名:\n");
	scanf("%s",name);
	len_name = strlen(name);

	for(i = 0;i < len_name;i++)
	{
		k1 = name[i] % 0xA;
		k1 = k1 ^ i;
		k1 += 0x2;
		if(k1 >= 0xA)
			k1 -= 0xA;
		
		//F2()的逆函数有很多,这里+100,输出之后,是小写的字母
		printf("%c",k1+100);
		
	}


完整的算法c代码同样在附件中







Splish 破解.rar

457.5 KB, 下载次数: 11, 下载积分: HB -3

评分

参与人数 10威望 +1 HB +29 THX +4 收起 理由
sjtkxy + 1 + 1
消逝的过去 + 1
冷亦飞 + 1
别来无恙 + 1
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
kway + 1
叶落花开 + 2
lies + 1
zwj00544 + 1
Shark恒 + 1 + 20 + 1 [快捷评语] - 评分=感恩!简单却充满爱!感谢您的作品!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
进来看看 发表于 2019-3-7 16:03 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
turbojet 发表于 2019-3-31 15:57 | 显示全部楼层

此帖仅作者可见
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-5-6 03:29 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
别来无恙 发表于 2022-5-27 15:26 | 显示全部楼层

此帖仅作者可见
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
凌夏随缘 发表于 2022-6-4 22:33 来自手机端 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
Wayne 发表于 2022-6-6 07:21 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Cerolluo 发表于 2022-12-14 08:59 | 显示全部楼层

此帖仅作者可见
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
曾经沧海 发表于 2023-1-20 21:41 | 显示全部楼层

此帖仅作者可见
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
sjtkxy 发表于 2023-1-21 05:06 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表