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

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

2014-5-9 18:12
19899
收藏
免费 4
支持
分享
最新回复 (57)
雪    币: 266
活跃值: (44)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
51
一步步的追赶~~~祈祷追不上
2014-8-21 13:23
0
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
52
[QUOTE=acqqer;1286552]伪代码:(验证部分)
int main()
{
        char passwd[MAX_LEN];
        input(passwd);
        char str_code[] = "10445678951";
        int _var_res = 0;
        int _must_be_equal_to_var_...[/QUOTE]

这位兄弟辛苦了!不过貌似是"_var_res < strlen(str_code)",原程序只是比较了10个字符,第十一个字符随意填都是correct
2014-9-16 17:17
0
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
53
这一章牛b大了,要看好多汇编指令,一时半会儿消化不了啊!
2014-9-16 17:19
0
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
54
我来批处理版的Splish keygen,保存为.bat文件:
@set @js=1 /*

@echo off & setlocal enabledelayedexpansion
set /p "Name=Name:"

set "Serial="
set "table=2345678901"
for /f "delims=" %%a in ('cscript //nologo //e:jscript "%~f0" %Name%') do %%a
for /l %%i in (0,1,10) do (
  set "Name_char=!Name:~%%i,1!"
  if "!Name_char!"=="" goto end

  set "Name_ascii=!ascii%%i!"
  set /a result=^(^(^(Name_ascii %% 10^)^^%%i^)+2^) %% 256
  if !result! geq 10 set /a result-=10
  
  call set "Serial=!Serial!%%table:~!result!,1%%"
)

:end
echo Serial:%Serial%
pause

goto :eof
*/

s="set /a ascii=0"
for(i=0;i<WSH.Arguments(0).length;i++)
  s=s+",ascii"+i.toString()+"="+WSH.Arguments(0).charCodeAt(i)
WSH.Echo(s)
2014-9-18 15:55
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
来个python版

def calc_u(s):
    ns = ""
    for i in range(len(s)):
        edx = ord(s[i])
        print edx
        edx = (((edx % 10) ^ i) + 2)%10
        print edx
        ns += chr(edx+40)
    return ns
2014-10-24 17:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
57
/*
功能:Splish.exe 注册码的算号器。
说明:代码未优化,目前可计算出8位注册码的密码
         比如账号为:Crack018,则密码为:mkkpisug
作者:Crack018
时间:2014.12.30
环境:Visual 2008
*/

#include <stdio.h>

int main(void)
{         
        char a[8];
        char b[8];

        char *p = a;

        int i, j;

        printf("请输入8位账号:\n");

        for (i=0; i<8; i++)
        {
                scanf("%c",p+i);
        }

        for (i=0; i<8; i++)
        {
                if (0x0A < (((a[i] % 0x0A) ^ i) + 2))
                {
                        b[i]  = (((a[i] % 0x0A) ^ i) + 2) - (0x0A) + (0x64);
                }else
                {
                        b[i]  = (((a[i] % 0x0A) ^ i) + 2) + (0x64);
                }
        }

        printf("密码为:\n");
        for (j=0; j<8; j++)
        {
                printf("%c",b[j] );
        }
   
        getchar();
        getchar();
        return 0;
}
2014-12-29 23:12
0
雪    币: 227
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
我认为正确注册码是EDHHIJKLMI,而不是EDHHIJKLMIE,因为最第10次没比就结束了,所以可以比那字符串少一个字符。
2015-1-28 18:53
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
59
严重支持!
2015-2-4 21:05
0
游客
登录 | 注册 方可回帖
返回
//