首页
社区
课程
招聘
使用OllyDbg从零开始Cracking 第十四章-硬编码序列号寻踪-Part2
发表于: 2014-5-9 18:12 19899

使用OllyDbg从零开始Cracking 第十四章-硬编码序列号寻踪-Part2

2014-5-9 18:12
19899
收藏
免费 4
支持
分享
最新回复 (57)
雪    币: 50
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
crakmeeasy这个没有上传,是忘了么?
2014-5-11 17:41
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
27
见上一章附件
2014-5-11 18:04
0
雪    币: 50
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
不是说开头那个上一章留下来的作业,新发的这一章讲的是name和serial number的算法,中间有一个crakmeeasy没有在附件里找到,如下,在page 5:
用OD加载这个名为”crakmeeasy”的CrackMe。

嘿嘿,这系列文章真是浅显易懂,关键是特详细,每一步都带着做,原作者真是太有心了,是英语的就好了可以自己看了。谢谢你翻译了。
交作业,
上传的附件:
2014-5-11 20:43
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
29
,这个程序忘了上传了...
已上传,见本章附件
2014-5-11 21:49
0
雪    币: 8719
活跃值: (2085)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
谢谢辛苦了!
2014-5-12 08:44
0
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
整合一个帖子 如何?

找到了,
2014-5-12 09:26
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
32
目录已翻译,见导航帖  
2014-5-12 11:15
0
雪    币: 206
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
楼主真是厉害,翻译速度比我看的还快 !
2014-5-14 11:14
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
34
,我翻译的已经很慢了... 一般周末才更新
2014-5-14 11:15
0
雪    币: 182
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
潜水的被你逼出来回复了,真心辛苦了!期待后续章节
2014-5-21 09:23
0
雪    币: 123
活跃值: (144)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
36
伪代码:(验证部分)
int main()
{
        char passwd[MAX_LEN];
        input(passwd);
        char str_code[] = "10445678951";
        int _var_res = 0;
        int _must_be_equal_to_var_res = 0;
        for (_var_res = 0; _var_res < strlen(str_code) - 1; _var_res++)
        {
                long cur_char = (signed long)passwd[_var_res];
                cur_char -= 20;
                long cmp_char = (signed long)str_code[_var_res];
                if (cur_char != cmp_char)
                {
                        continue;
                }
                str_code[_var_res] = 0x73;//0x73 = 115 = 's'
                _must_be_equal_to_var_res++;
        }
        //_var_res = strlen(str_code) - 1;
        //
        //show result
        if (_must_be_equal_to_var_res == _var_res)
        {
                success();
        }
        else
        {
                fail();
        }
}
2014-5-22 14:48
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
真好  辛苦了
2014-5-23 17:15
0
雪    币: 196
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
楼主辛苦了
2014-5-29 19:23
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
顶下了。自己学习下。
2014-5-29 23:15
0
雪    币: 178
活跃值: (387)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
写了个代码生成Splish序列号,向楼主致敬!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

static void PrintUnr(char *p[], int n)
{
	int i,j;
	for(i=0;i<n;i++) {
		printf("%c", p[i][0]);
		free(p[i]);
	}
	printf("\n");
#if 0
		for(j=0;j<128;j++){
			if(!p[i][j])
				break;
			printf("%c,", p[i][j]);
		}
	}
#endif
}

int main(void)
{
	char name[12];
	char *p[11]={NULL};

	printf("input name:");
	scanf("%11s", name);
	printf("name:%s[%d]\n", name, strlen(name));
	int i;
	for(i=0;i<strlen(name);i++){
		char tmp = ((int)((int)(name[i]%10)^i)+2);
		char n1 = tmp > 10?tmp-10:tmp;
		int n = 120;
		p[i] = malloc(128);
		memset(p[i], 0, 128);
		int j = 0;
		while(n){
			char unr = n1+n;
			if(isprint(unr)){
				p[i][j++] = unr;
				//printf("%c[%d]\r\n", p[i][j-1], unr);
			}
			n -= 10;
		}
	}
	PrintUnr(p, strlen(name));

	return 0;
}
2014-6-9 23:51
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
41
[QUOTE=jiych;1291806]写了个代码生成Splish序列号,向楼主致敬!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

static void PrintUnr(char *p[], int n)
{
        int i...[/QUOTE]

...
2014-6-12 15:17
0
雪    币: 175
活跃值: (2331)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
最后如果能把全部整理在一起,做给文件,看起来方便。
2014-6-15 16:25
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
学习~~~很不错!!!
2014-7-7 09:11
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
老大 這個在https://tuts4you.com的哪裡啊 找不到
想看看英文版的...自己英文還行...平常也都看英文的 謝謝了
2014-7-8 22:15
0
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
这个tuts4you.com没有,直接在看雪搜索... china大哥已经发过西班牙文和英文版了...
2014-7-8 22:16
0
雪    币: 512
活跃值: (3465)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
46
#include <stdio.h>
#include <string.h>
#include <ctype.h>

void GenerateNameKey(const char *pszName, char *pszNameCode);
void GenerateSerial(const char *pszName,  char *pszSerial);

int main(int argc, char* argv[])
{
	if (argc!=2)
	{
		printf("请指定Name!\n");
		return 0;
	}
	
	char szResult[128] = {0};
	GenerateSerial(argv[1],szResult);
	printf("%s\n", szResult);
	return 0;
	
}

void GenerateNameKey(const char *pszName, char *pszNameCode)
{	
	int	ebx=0;
	int i = 0;	
	int edx = 0;
	do
	{
		i=pszName[ebx];
		edx = i % 10;
		edx = edx ^ ebx;
		edx = edx + 2;
		unsigned char dl = edx;
		if(dl<10)
		{
			pszNameCode[ebx]=dl;
		}
		else
		{
			dl = dl-10;
			pszNameCode[ebx]=dl;
		}
		ebx++;
	}while(ebx!=strlen(pszName));
}

void GenerateSerial(const char *pszName,  char *pszSerial)
{
	
	char szNameKey[128] = {0};	
	GenerateNameKey(pszName, szNameKey);
	
	for (int i=0;i<strlen(pszName);i++)
	{
		for (int j=0;j<=128;j++)
		{
			if (!isprint(j))
				continue;
			
			if (j == ' ' || j == '\t' || j == '\r' || j == '\n')
				continue;
			
			if (j % 10 ==szNameKey[i])
			{
				pszSerial[i] = j;
				break;
			}
			
		}
		
	}
}
2014-7-22 12:53
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
47
,Good job...
2014-7-22 13:05
0
雪    币: 80
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
行不行的
2014-7-24 18:14
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
学习学习,真实入门神器啊
2014-7-25 09:07
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
看了感觉收获很大呀~谢谢~
2014-8-12 11:24
0
游客
登录 | 注册 方可回帖
返回
//