首页
社区
课程
招聘
[原创]小试金枪: jackozoo 2009热身版 !!
发表于: 2009-9-3 14:05 35985

[原创]小试金枪: jackozoo 2009热身版 !!

2009-9-3 14:05
35985
收藏
免费 7
支持
分享
最新回复 (64)
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
26
膜拜ccfer, 膜拜海风.

第一次知道这种新式的穷举(对我来说是新式 ), 总之获益匪浅.
2009-9-3 23:05
0
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
27
谢谢海风月影大虾 学习了
2009-9-4 00:09
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
28
海风牛第一次放的附件中的CM被修改了, 导致注入后无法穷举. GetDlgItemTextA和MessageBoxA的调用被nop了, 呵呵. 所以之前下的朋友到1楼下载.
2009-9-4 00:24
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
29
膜拜所有人.
2009-9-4 00:29
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
30
第一个附件我放错了。。。。新的附件才是正确的,直接注入到1楼的原版cm里面即可
2009-9-4 09:01
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
31
jackozoo这个画面好像曾经看过
2009-9-4 09:46
0
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
32
卡卡? 杀很大?
2009-9-4 09:48
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
33
s大指的画面是什么? CM头像是一支球队的合影.
2009-9-4 10:15
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
34
这个CM的足球图像
2009-9-4 10:33
0
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
35
我也玩玩:

name: cutesnail
Serial: xjkvhmzro
2009-9-4 10:33
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
36
2000下不能运行的原因:
1. 进入DialogProc后的ebx不一定是0
2. MessageBoxA函数入口地址不能随便+2
2009-9-4 10:46
0
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
37
放个注册机,收工!
上传的附件:
2009-9-4 11:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
学习论坛里的牛人方法。。。
2009-9-4 11:04
0
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
39
procedure TForm1.BitBtnCountClick(Sender: PObj);
var
  i,j : Integer;
  Regname, RegCode : string;
const
  key : string = 'zyxwvutsrqponmlkjihgfedcba';  
begin
  if (Length( editBox1.text )<4) or (EditBox1.Text = 'name must more than 3 !')
  then begin
         EditBox1.Text := 'name must more than 3 !';
         EditBox2.Text := 'name must more than 3 !';
         Exit;
       end;

  Regname := editBox1.text;
  RegCode := '';  
  for i := 1 to Length(Regname) do
    begin
      j := ord(regname[i]) - 97;

      regcode := regcode + key[j+1];
    end;
  RegCode := Copy(RegCode,1,1) + 'jk' + Copy(RegCode,4,Length(Regname)-3);
  EditBox2.Text := regcode;
end;
2009-9-4 11:08
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
40
我是来膜拜的
VM无法挡住你进攻的步伐

BTW:幸好我没用VM
2009-9-4 11:23
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
41
CS明天要大开杀戒了
2009-9-4 11:35
0
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
42
明天我的参赛cm就要被放出来了,希望能够多坚持一会儿~
2009-9-4 11:43
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
43
用你的注册机试试这个注册名:

wqertywvdgr
2009-9-4 11:52
0
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
44
注册名长度大于9位的猜不出来了
2009-9-4 12:46
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
45
ccfer太强大了,更新一下我的a.c
上传的附件:
2009-9-4 12:51
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
46
的确, 这样速度快了不止一个数量级 .
ccfer太强大了...
2009-9-4 13:18
0
雪    币: 7309
活跃值: (3788)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
47
算不出9位以上的name
太难了
2009-9-4 13:28
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
48
不用注入,改成exe更方便一些

#include <windows.h>

DWORD Base;

BOOL check(char *name, char *key)
{

	DWORD a = Base + 0x227B0;
	DWORD b = Base + 0x22814;
	DWORD c = Base + 0xF168;
	DWORD d = Base + 0x2B80;
	BOOL r = 0;

	strcpy((char *)a, name);
	strcpy((char *)b, key);

	__asm
	{
		xor ebx, ebx;
		mov ecx, a;
		push c;
		push offset _out;
		push d;
		retn;
_out:
		mov r, eax;
	}

	return r;
}

#define MAX_CHAR 100

char wantname[MAX_CHAR] = "wqertywvdgr";

char name[MAX_CHAR];
char key[MAX_CHAR];

__declspec(dllexport) void aaaa()
{
	int len = strlen(wantname);

	int i;
	char cc;

	memset(name, 0, MAX_CHAR);
	memset(key, 0, MAX_CHAR);

	strcpy(name, "feng");
	strcpy(key, "ujkt");


	for(i = 0; i < len; i++)	//name
	{
		name[i] = wantname[i];
		for(cc = 'a'; cc < 'z'; cc++)	
		{
			key[i] = cc;
			if(check(name, key))
			{
				MessageBox(NULL, name, key, NULL);
				break;
			}
		}
	}

	MessageBox(NULL, name, key, NULL);
	return;
}

int main(int argc, char* argv[])
{
	DWORD dwProt;
	LPDWORD x;
	int i;
	Base = (DWORD)LoadLibraryEx("ZooCMa.exe", NULL, DONT_RESOLVE_DLL_REFERENCES);
	VirtualProtect((LPVOID)Base,0x9000,PAGE_EXECUTE_READWRITE,&dwProt);
	*(DWORD *)(Base+0x2BE6) += Base-0x400000;
	x = *(LPDWORD *)(Base+0x2BE6);
	for (i=0;i<0x3B;i++)
	{
		x[i] += Base-0x400000;
	}
	aaaa();
}
2009-9-4 14:05
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
49
前面有人写了个注册机,其实从已有的3组序列号就能猜出来算法,根本不需要调试。况且高人都用穷举的办法,我等晚辈就不再浪费光阴了。ccfer大侠借用crackme的算法call穷举,猜出来的可能性不是很大。原因可能是1、crackme就没有计算大于9位注册码的功能;2、计算时间不能忍受。

楼上的大侠写的程序可能有些人看不懂,简单注释一下:

思路就是借用crackme的算法call来穷举,技巧就是下面的一段代码

BOOL check(char *name, char *key)
{

  DWORD a = Base + 0x227B0;    //得到的用户名的地址
  DWORD b = Base + 0x22814;    //得到的注册名的地址
  DWORD c = Base + 0xF168;       //算法call入口参数 如果修改会影响call中执行流程,报错
  DWORD d = Base + 0x2B80;       //算法call入口地址
  BOOL r = 0;

  strcpy((char *)a, name);           
  strcpy((char *)b, key);

  __asm
  {
    xor ebx, ebx;
    mov ecx, a;
    push c;               //004010FB  |.  68 68F14000   PUSH ZooCMa.0040F168
    push offset _out;     //为从creakme返回提前放入后面指令的地址
    push d;              // 这两句模拟  CALL ZooCMa.00402B80 执行creakme的代码,执行完后跳到_out处继续
    retn;
_out:
    mov r, eax;
  }
  return r;
}

if (check(name, key)) then MessageBox(NULL, name, key, NULL);
//  模拟 00401100  |.  E8 7B1A0000   CALL ZooCMa.00402B80
         //00401105  |.  83F8 01       CMP EAX,1

可能还没有人手工调试出算法。 楼主能否给个 tianyilove 的注册?只是超过9位,本人水平有限,无法得知。
2009-9-4 19:06
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
不懂     
2009-9-4 20:48
0
游客
登录 | 注册 方可回帖
返回
//