能力值:
( LV2,RANK:10 )
|
-
-
26 楼
crakmeeasy这个没有上传,是忘了么?
|
能力值:
( LV13,RANK:1760 )
|
-
-
27 楼
见上一章附件
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
不是说开头那个上一章留下来的作业,新发的这一章讲的是name和serial number的算法,中间有一个crakmeeasy没有在附件里找到,如下,在page 5:
用OD加载这个名为”crakmeeasy”的CrackMe。
嘿嘿,这系列文章真是浅显易懂,关键是特详细,每一步都带着做,原作者真是太有心了,是英语的就好了可以自己看了。谢谢你翻译了。
交作业,
|
能力值:
( LV13,RANK:1760 )
|
-
-
29 楼
,这个程序忘了上传了...
已上传,见本章附件
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
谢谢辛苦了!
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
整合一个帖子 如何?
找到了,
|
能力值:
( LV13,RANK:1760 )
|
-
-
32 楼
目录已翻译,见导航帖
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
楼主真是厉害,翻译速度比我看的还快 !
|
能力值:
( LV13,RANK:1760 )
|
-
-
34 楼
,我翻译的已经很慢了... 一般周末才更新
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
潜水的被你逼出来回复了,真心辛苦了!期待后续章节
|
能力值:
( 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();
}
}
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
真好 辛苦了
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
楼主辛苦了
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
顶下了。自己学习下。
|
能力值:
( 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;
}
|
能力值:
( 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]
...
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
最后如果能把全部整理在一起,做给文件,看起来方便。
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
学习~~~很不错!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
老大 這個在https://tuts4you.com的哪裡啊 找不到
想看看英文版的...自己英文還行...平常也都看英文的 謝謝了
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
这个tuts4you.com没有,直接在看雪搜索... china大哥已经发过西班牙文和英文版了...
|
能力值:
( 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;
}
}
}
}
|
能力值:
( LV13,RANK:1760 )
|
-
-
47 楼
,Good job...
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
行不行的
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
学习学习,真实入门神器啊
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
看了感觉收获很大呀~谢谢~
|
|
|