emeditor 注册码(emeditor注册密钥)
一、求一段加入注册表代码:右键新建 EmEditor
转:
在清理系统的时候,无意中将EmEditor的鼠标右键功能给清理掉了,在EmEditor的配置中又没有找到如何加入到鼠标右键菜单的方法,只好使用导入注册表功能了,以下的代码,拷贝到记事本中,保存为EmEditor.reg文件,双击导入到注册表就可以了。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\EmEditor]
@="EmEditor"
[HKEY_CLASSES_ROOT\*\shell\EmEditor\command]
@="c:\\Program Files\\EmEditor\\EmEditor.exe%1"
导入后不用重启系统就可以生效。
注意:最下面一行 c:\\Program Files\\EmEditor\\EmEditor.exe是调用EmEditor可执行程序路径,这个要与你计算机中安装的路径一直,如果不同,请自行修改路径确保路径一直,否则每次右键使用EmEditor打开文件会让你选择打开程序。
上面的方法是在网上找到的,但是在实际使用的时候,如果鼠标右键选择EmEditor同时打开多个文件还是有问题。下面的方法是icech修正的方法,可以完美解决EmEditor加入到鼠标右键菜单的问题:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\EmEditor]
@="{DFA0CC7F-D36B-47D1-8EF5-415C1DA53F57}"
将以上内容拷贝并保存为EmEditor.reg文件,导入到注册表即可,比第一种的方法好很多。
二、Emeditor怎么使用 Emeditor正则表达式大全
1.启用正则表达式
菜单: Search- Find(Replace)-选中 Use Regular Expressions
2. Emeditor正则语法
正则表达式是普通字符和元字符组合的一种模式.它的结构与算术表达式的结构类似,各种元字符和运算符可以将小的表达式组合起来,创建大的表达式。通过在一对分隔符之间放置表达式模式的各种组件,就可以构建正则表达式。
2.1普通字符
普通字符是指除了".","*","?","+","(",")","{","}","[","]","^","$"和"\"这些特殊字符之外的所有其他字符.而这些特殊字符也可以通过前面加上"\"前缀而变为普通字符.比如,搜索"CCF"即为在文本中匹配所有的"CCF"字符串,搜索"\[CCF\]"则是在文本中匹配所有的"[CCF]"字符串.
简而言之,普通字符即为只匹配自身的字符.
2.2元字符
元字符不匹配其自身,它用特殊方式来解析从而实现更多的逻辑功能。正则表达式通过元字符在模式中包含选择和循环
2.2.1特殊字符
3.匹配除换行符\n之外的任何单个字符。
()分组捕获(子表达式)的开始和结束。可以捕获子表达式以供以后使用。
[ ]中括号表达式的开始。
中括号表达式是在方括号内包含一个或多个字符构成的列表的表达式。普通字符在中括号内表示本身,大多数特殊字符在中括号表达式内出现时失去它们的意义。除了转义字符'\',(要包含'\',需要使用'\')如:正则表达式 No [1234]匹配 No 1, No 2, No 3和 No4.如果想在中括号中使用一个范围作为列表来匹配字符,可以用连字符'-'将范围中的开始字符和结束字符分开。单个字符的字符值确定范围内的相对顺序。如:正则表达式 No [1-4]= No [1234]
注意 1.开始值的Unicode值必须在结束值Unicode值的前面。
注意 2. [\-]匹配连字符'-',放在中括号列表的开始或结尾也可起到同样的效果,如 [-c-f]匹配 c至 f的字符和连字符
如果需要匹配不属于列表或范围内的任何字符,可以在列表开头加上'^'前缀。如:正则表达式 No [^1-4]匹配 No 5和更大的编号.
中括号表达式还可进行组合,如 [A-Za-z0-9]匹配A-Z, a-z, 0-9的字符
\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,
字符 n匹配字符 n
\n匹配换行符
序列\匹配\
序列\(匹配(
|替换字符,对|左右的两个项分别匹配进行选择。或者说,就是逻辑的OR的概念
{}标记限定符表达式的开始。
(数量)限定字符
限定字符能够指定正则表达式的某个部分必须出现的次数
*零次或多次匹配前面的字符或子表达式。如,c*f可以匹配 f和 ccf。*={0,}
+一次或多次匹配前面的字符或子表达式。如,c+f可以匹配 cf和 ccf,但不匹配 f。+={1,}
?零次或一次匹配前面的字符或子表达式。如,cc?f可以匹配 cf或 ccf。?={0,1}
{n} n是非负整数。正好匹配 n次。如,c{2}f可以匹配 ccf。
{n,} n是非负整数。至少匹配 n次。如,c{2,}f不匹配 cf,而可以匹配 ccccccf。c{1,}= c+。c{0,}= c*
{n,m} m和 n是非负整数,其中 n<= m。至少匹配 n次,至多匹配 m次。如,c{1,3}可以匹配 ccf中的cc。c{0,1}等效于 c?。
三、EmEditor3破解
目标软件: EmEditor 3.28简体中文版
文件大小: 1086 KB
使用平台: Win9x/NT/2000/XP
软件授权:共享软件
使用限制:功能限制
文件大小: 1086 KB
下载地址:
软件简介:大名鼎鼎的 EmEditor是一款优秀的文字处理软件,与同类软件相比,它具有轻便快速的优点。它的功能非常强大,不管你的文章是否含有换行符、即使容量为几MB的文件也可以很快地打开编辑;通过插件导入支持,几乎可实现所有的特殊功能;键盘、工具列、菜单、字型和色彩等的自订功能,实现轻松编辑。EmEditor还获得了“Designed for Windows”徽标认证,可在各操作系统下获得最佳的性能体验。网页设计者用它来编辑HTML或者Perl程序文件,程序员用它来编辑源程序,普通用户用它作为记事本——这正是它的出众之处。新版本更新内容:在检索,替换以及在文档中检索的时候,增加了利用正规表现的方法,增加了“终了后关闭”的勾选栏;解决了在tag jump时,如果文件不存在,会出现的异常结束的问题;勾选“以空格代替tab插入”后,如果输入tab,就会自动将tab变为空格;在命令栏中增加了“不增加最近使用过的文档的快速路径”选项。
使用工具: TRW2000 v1.22
破解过程:
输入序列号:1000-2000-3000-4000,记为SN(1)-SN(2)-SN(3)-SN(4)。
Hmemcpy设断,来到:
CMP EAX,03F1
JNZ 004196DE
PUSH BYTE+01
CALL 00418CF1
MOV ESI,EAX
CMP ESI,EBX
JZ 004196C7
PUSH ESI
CALL 004194AA/* Shit!竟然不符合人体工程学!追进!*/
CMP EAX,EBX
JNG 004196A4/*跳走就 Game Over!*/
XOR ECX,ECX
CMP EAX,BYTE+02
SETZ CL
MOV [00447B74],EAX
PUSH BYTE+40
ADD ECX,0455
JMP SHORT 004196BA
JZ 004196C0
XOR ECX,ECX
CMP EAX,BYTE-02
SETNZ CL
PUSH BYTE+30
DEC ECX
AND ECX,BYTE+03
ADD ECX,0454
PUSH ECX
CALL 0041ABEA/* Call对话框*/
PUSH ESI
CALL `ADVAPI32!RegCloseKey`
LEA ECX,[EBP+08]
CALL 0040C0AA
XOR EAX,EAX
MOV [004499A4],BL
INC EAX
POP ESI
POP EBX
LEAVE
RET 04
PUSH EBP
MOV EBP,ESP
SUB ESP,BYTE+30
PUSH ESI
PUSH BYTE+02
PUSH DWORD 004464F8
LEA EAX,[EBP-30]
PUSH DWORD 0043FBB8
PUSH EAX
CALL `USER32!wsprintfA`
MOV ESI,[0043F004]
AND DWORD [EBP-04],BYTE+00
ADD ESP,BYTE+10
LEA EAX,[EBP-04]
PUSH EAX
PUSH BYTE+00
LEA EAX,[EBP-08]
PUSH EAX
PUSH BYTE+00
LEA EAX,[EBP-30]
PUSH EAX
PUSH DWORD [EBP+08]
CALL ESI
TEST EAX,EAX
JNZ 0041951F
CMP DWORD [EBP-08],BYTE+03
JNZ 0041951F
CMP DWORD [EBP-04],BYTE+08
JNZ 0041951F
LEA EAX,[EBP-04]
PUSH EAX
LEA EAX,[EBP-10]
PUSH EAX
LEA EAX,[EBP-08]
PUSH EAX
PUSH BYTE+00
LEA EAX,[EBP-30]
PUSH EAX
PUSH DWORD [EBP+08]
CALL ESI
TEST EAX,EAX
JNZ 0041951F
LEA EAX,[EBP-10]
PUSH EAX
CALL 00423EDA/*兵来将挡,“你”来我访!*/
JMP SHORT 00419521
XOR EAX,EAX
POP ESI
LEAVE
RET 04
PUSH ESI
MOV ESI,[ESP+08]
MOVZX EAX,WORD [ESI]/* SN(1)的十六进制值送入 EAX*/
PUSH BYTE+0A/* 0xA入栈*/
CDQ
POP ECX/* ECX出栈*/
IDIV ECX/*除以 ECX*/
CMP EAX,AB/*比较商是否等于0xAB*/
JZ 00423EF4/*是就进入下一步计算*/
OR EAX,BYTE-01
JMP SHORT 00423F12/*否则返回*/
从上面我们知道: SN(1)/0xA=0xAB,即 SN(1)=0xAB*0xA=0x6AE。
哎,等等先~!我以前校队球衣号码是7号,那就:SN(1)=0x6AE+0x7=0x6B5吧:)!
重新填入注册信息继续:
PUSH EDI
MOV DI,[ESI+06]
PUSH ESI
CALL 00423DD1/*可疑呀~~~*/
CMP EAX,BYTE+01/* EAX必须等于 1哦*/
JNZ 00423F11/*跳走就 Game Over!
PUSH ECX
PUSH ESI
MOV ESI,[ESP+0C]
MOV AX,[ESI+02]/* SN(2)送入 AX*/
AND WORD [ESI+06],BYTE+00
CMP AX,270F
JA NEAR 00423ED2/*大于 0x270F就 Game Over!
MOV DX,[ESI+04]/* SN(3)送入 DX*/
CMP DX,270F
JA NEAR 00423ED2/*大于0x270F就跳向 423ED2*/
TEST AX,AX/*测试 SN(2)*/
JZ NEAR 00423ECE/*为空就跳向 423ECE*/
CMP AX,08AE/*比较 AX是否等于 0x8AE*/
JZ NEAR 00423ECE/*为空就跳向 423ECE*/
CMP AX,162E/*比较 AX是否等于 0x162E*/
JZ NEAR 00423ECE/*为空就跳向 423ECE*/
CMP AX,2516/*比较 AX是否等于 0x2516*/
JZ NEAR 00423ECE/*为空就跳向 423ECE*/
XOR ECX,ECX/* ECX清零*/
MOV CX,[ESI]/* SN(1)送入 CX*/
CMP CX,06AE/*比较是否等于 0x6AE*/
MOV [ESP+04],ECX/* ECX的值送入[ESP+4]处*/
JZ NEAR 00423ECE/*是就送你回姥姥家!
CMP AX,0B2C/*比较 SN(2)是否等于 0xB2C*/
JZ NEAR 00423ECE/*是就 Game Over!
CMP AX,1F80/*比较 SN(2)是否等于 0x1F80*/
JZ NEAR 00423ECE/*是就 Game Over!
PUSH EBX
MOVZX EAX,AX/* SN(2)的值送入 EAX*/
PUSH EBP
PUSH EDI
MOVZX EDI,DX/* SN(3)的值送入 EDI*/
MOV [ESP+18],EAX/* EAX的值送入 [ESP+18]处*/
PUSH BYTE+64/* 0x64入栈*/
POP EBX/* EBX出栈*/
MOV EAX,EDI/* EDI送入 EAX*/
CDQ
IDIV EBX/*除以 EBX*/
PUSH BYTE+0A/* 0xA入栈*/
POP EBP/* EBP出栈*/
MOVZX ECX,CX/* SN(1)送入 ECX*/
PUSH BYTE+64
MOV EBX,EAX/* EAX送入 EBX*/
MOV EAX,ECX/* ECX送入 EAX*/
CDQ
IDIV EBP/*除以 EBP*/
MOV EDX,[ESP+1C]/* SN(2)送入 EDX*/
ADD EDX,EBX/* EDX+ EBX*/
ADD EAX,EDX/* EAX+ EDX*/
ADD EAX,EDI/* EAX+ EDI*/
CDQ
POP EDI/* SN(3)出栈*/
IDIV EDI/*除以 EDI*/
MOV EAX,[ESP+18]/* SN(2)送入 EAX*/
PUSH BYTE+64/* 0x64入栈*/
POP EBX/* EBX出栈*/
PUSH BYTE+64
POP EBP/* EBP出栈*/
PUSH EBP
MOV DI,[EDX*4+00446B10]/*查表取值*/
CDQ
IMUL DI,DI,BYTE+64/*乘以 0x64*/
IDIV EBX/*除以 EBX*/
MOV EBX,EAX/* EAX送入 EBX*/
MOV EAX,ECX/* ECX送入 EAX*/
CDQ
IDIV EBP/*除以 EBP*/
ADD ECX,EBX/* ECX+ EBX*/
ADD EAX,ECX/* EAX+ ECX*/
POP ECX/* ECX出栈*/
CDQ
IDIV ECX/*除以 ECX*/
ADD DI,[EDX*4+00446B10]/*查表取值*/
CMP WORD [ESP+10],06B3/*比较 SN(1)是否等于 0x6B3*/
MOV [ESI+06],DI/* DI的值送入 ESI+06处*/
POP EDI/* SN(4)出栈*/
POP EBP
POP EBX
JZ 00423EC9/*是就跳向教学注册版本*/
CMP WORD [ESP+04],06B2/*比较SN(1)是否等于 0x6B2*/
JZ 00423EC9/*是就跳向教学注册版本*/
XOR EAX,EAX/*否则将 EAX清零*/
INC EAX/* EAX+ 1*/
JMP SHORT 00423ED5/*成功返回*/
PUSH BYTE+02/* 0x2入栈*/
POP EAX/* EAX出栈*/
JMP SHORT 00423ED5
PUSH BYTE-02/* 0xFFFFFFFE入栈*/
JMP SHORT 00423ECB
OR EAX,BYTE-01/* EAX与 0xFFFFFFFF做与运算*/
POP ESI
POP ECX
RET 04/*返回*/
XOR EAX,EAX/* EAX清零*/
CMP DI,[ESI+06]/*关键比较*/
SETZ AL/*相等就将 AL置 1*/
LEA EAX,[EAX+EAX-01]/*将 EAX+EAX-1的值保存到 EAX*/
POP EDI
POP ESI
RET 04/*返回*/
附表:
0030:00446B10 26 00 00 00 5B 00 00 00-62 00 00 00 36 00 00 00&...[...b...6...
0030:00446B20 34 00 00 00 60 00 00 00-13 00 00 00 35 00 00 00 4...`.......5...
0030:00446B30 19 00 00 00 54 00 00 00-3F 00 00 00 44 00 00 00....T...?...D...
0030:00446B40 4C 00 00 00 38 00 00 00-5D 00 00 00 33 00 00 00 L...8...]...3...
0030:00446B50 56 00 00 00 61 00 00 00-42 00 00 00 21 00 00 00 V...a...B...!...
0030:00446B60 3E 00 00 00 2D 00 00 00-23 00 00 00 0E 00 00 00>...-...#.......
0030:00446B70 1E 00 00 00 5F 00 00 00-57 00 00 00 12 00 00 00...._...W.......
0030:00446B80 1B 00 00 00 17 00 00 00-22 00 00 00 58 00 00 00........"...X...
0030:00446B90 2C 00 00 00 63 00 00 00-5C 00 00 00 18 00 00 00,...c...\.......
0030:00446BA0 37 00 00 00 41 00 00 00-59 00 00 00 4D 00 00 00 7...A...Y...M...
0030:00446BB0 15 00 00 00 5A 00 00 00-53 00 00 00 0B 00 00 00....Z...S.......
0030:00446BC0 05 00 00 00 1C 00 00 00-10 00 00 00 2E 00 00 00................
0030:00446BD0 49 00 00 00 40 00 00 00-0D 00 00 00 07 00 00 00 I...@...........
0030:00446BE0 50 00 00 00 3D 00 00 00-32 00 00 00 46 00 00 00 P...=...2...F...
0030:00446BF0 0A 00 00 00 43 00 00 00-2B 00 00 00 00 00 00 00....C...+.......
0030:00446C00 3B 00 00 00 48 00 00 00-5E 00 00 00 4E 00 00 00;...H...^...N...
0030:00446C10 51 00 00 00 1F 00 00 00-20 00 00 00 3A 00 00 00 Q..........:...
0030:00446C20 01 00 00 00 2A 00 00 00-45 00 00 00 55 00 00 00....*...E...U...
0030:00446C30 4A 00 00 00 02 00 00 00-52 00 00 00 27 00 00 00 J.......R...'...
0030:00446C40 03 00 00 00 4B 00 00 00-08 00 00 00 3C 00 00 00....K.......<...
0030:00446C50 0F 00 00 00 14 00 00 00-24 00 00 00 25 00 00 00........$...%...
0030:00446C60 28 00 00 00 29 00 00 00-16 00 00 00 1D 00 00 00(...)...........
0030:00446C70 1A 00 00 00 11 00 00 00-2F 00 00 00 39 00 00 00......../...9...
0030:00446C80 09 00 00 00 47 00 00 00-06 00 00 00 4F 00 00 00....G.......O...
0030:00446C90 04 00 00 00 31 00 00 00-0C 00 00 00 30 00 00 00....1.......0...
0030:00446CA0 01 00 00 00 01 00 00 00-FF FF FF FF FF FF FF FF........������������
呵呵,好像长征一样!不过总算写完了!:)
写了个小程序,删掉了前面的地址,这下初学者朋友就不会“偷懒”了!:)
总结一下吧:
1:序列号只能为数字;
2:SN(1)<> 0x6AE、0x6B2、0x6B3;
3:SN(2)<>0xB2C、0x1F80、0x8AE、0x162E、0x2516;
4:(SN(1)/0xA+SN(2)+SN(3)/0x64+SN(3)) MOD 0x64;
5:根据步骤 4的结果查表取值,然后乘以 0x64;
6:(SN(1)+SN(1)/0x64+SN(2)/0x64)) MOD 0x64;
7:根据步骤 6的结果查表;
8:SN4=步骤 5的结果+步骤 7的结果。
剩下的工作就是写注册机了:
#include
main()
{ int sn1,sn2,sn3,sn4,i,p,q,data[]={0x26,0x5B,0x62,0x36,0x34,0x60,0x13,0x35,0x19,0x54,0x3F,0x44,0x4C,0x38,0x5D,0x33,0x56,0x61,0x42,0x21,0x3E,0x2D,0x23,0x0E,0x1E,0x5F,0x57,0x12,0x1B,0x17,0x22,0x58,0x2C,0x63,0x5C,0x18,0x37,0x41,0x59,0x4D,0x15,0x5A,0x53,0x0B,0x05,0x1C,0x10,0x2E,0x49,0x40,0x0D,0x07,0x50,0x3D,0x32,0x46,0x0A,0x43,0x2B,0x00,0x3B,0x48,0x5E,0x4E,0x51,0x1F,0x20,0x3A,0x01,0x2A,0x45,0x55,0x4A,0x02,0x52,0x27,0x03,0x4B,0x08,0x3C,0x0F,0x14,0x24,0x25,0x28,0x29,0x16,0x1D,0x1A,0x11,0x2F,0x39,0x09,0x47,0x06,0x4F,0x04,0x31,0x0C,0x30,0x01,0x01,0xFF};
clrscr();
randomize();
printf("*****************************************************\n");
printf("* EmEditor 3.28 Keygen*\n");
printf("* Made by fengma*\n");
printf("* Mail:fengma@2911.net*\n");
printf("*****************************************************\n");
printf("\nYour registration code:");
for(i=0;;i++)
{sn1=random(10)+0x6AE;
if(sn1/0xA==0xAB&&(sn1)!=0x6AE&&(sn1)!=0x6B2&&(sn1)!=0x6B3&&(sn1)!=0x0)
break;
}
printf("%d",sn1);
printf("-");
for(i=0;;i++)
{sn2=random(10000);
if((sn2)!=0xB2C&&(sn2)!=0x1F80&&(sn2)!=0x8AE&&(sn2)!=0x162E&&(sn2)!=0x2516&&(sn2)!=0x0)
break;
}
if(sn2<10) printf("000%d",sn2);
else if(sn2<100) printf("00%d",sn2);
else if(sn2<1000) printf("0%d",sn2);
else printf("%d",sn2);
printf("-");
sn3=random(10000);
if(sn3<10) printf("000%d",sn3);
else if(sn3<100) printf("00%d",sn3);
else if(sn3<1000) printf("0%d",sn3);
else printf("%d",sn3);
printf("-");
p=(sn1/0xA+sn2+sn3/0x64+sn3)%0x64;
q=(sn1+sn1/0x64+sn2/0x64)%0x64;
sn4=data[p]*0x64+data[q];
if(sn4<10) printf("000%d",sn4);
else if(sn4<100) printf("00%d",sn4);
else if(sn4<1000) printf("0%d",sn4);
else printf("%d",sn4);
printf("\n");
getch();
}
fengma[BCG] Cracked
17:48 02-15-2003
网上面人的破解日志