吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7227|回复: 20
收起左侧

[原创] GEditor3(女娲设计器)算法分析——也是一款算法很简单的软件

[复制链接]
Ps出来的小赵 发表于 2018-2-1 18:32
本帖最后由 zhaozdy 于 2018-2-1 20:30 编辑


上次的帖子有点水,挺不好意思的,所以这次厚颜无耻得再水一贴……


这次的软件和上次的是同一个作者的,算法有些相同,不过更加复杂点……


还是老规矩,大佬请继续浏览别的帖子,我是为小白服务的。


软件补张截图吧…………
QQ截图20180201194017.png

下面是分析代码,实在看不懂的话看我后面的式子(关键位置自己找吧,挺好找的)

[Asm] 纯文本查看 复制代码
00404813  |.  59            pop ecx                                  ;  0012EBA8
00404814  |.  8945 A4       mov [local.23],eax
00404817  |.  8B45 A4       mov eax,[local.23]
0040481A  |.  83F8 0A       cmp eax,0xA                              ;  检验注册码是不是大于10位
0040481D  |.  74 75         je short GEditor.00404894                ;  上面如果注册码小于十位,则跳,否则不跳,失败
0040481F  |.  6A 00         push 0x0
00404821  |.  8D45 9A       lea eax,dword ptr ss:[ebp-0x66]
00404824  |.  E8 83020000   call GEditor.00404AAC
00404829  |.  B2 02         mov dl,0x2
0040482B  |.  E8 B0020000   call GEditor.00404AE0
00404830  |.  66:8B08       mov cx,word ptr ds:[eax]
00404833  |.  51            push ecx
00404834  |.  66:C745 C8 2C>mov word ptr ss:[ebp-0x38],0x2C
0040483A  |.  BA 3C814F00   mov edx,GEditor.004F813C                 ;  注册失败:注册码号码不对,请核对后输入!
0040483F  |.  8D45 F4       lea eax,[local.3]
00404842  |.  E8 45070F00   call GEditor.004F4F8C
00404847  |.  FF45 D4       inc [local.11]
0040484A  |.  8B00          mov eax,dword ptr ds:[eax]
0040484C  |.  B2 01         mov dl,0x1
0040484E  |.  59            pop ecx                                  ;  0012EBA8
0040484F  |.  E8 A4650B00   call GEditor.004BADF8
00404854  |.  FF4D D4       dec [local.11]
00404857  |.  8D45 F4       lea eax,[local.3]
0040485A  |.  BA 02000000   mov edx,0x2
0040485F  |.  E8 F4080F00   call GEditor.004F5158
00404864  |.  8B4D B4       mov ecx,[local.19]
00404867  |.  8B81 10030000 mov eax,dword ptr ds:[ecx+0x310]
0040486D  |.  8B10          mov edx,dword ptr ds:[eax]
0040486F  |.  FF92 C0000000 call dword ptr ds:[edx+0xC0]
00404875  |.  FF4D D4       dec [local.11]
00404878  |.  8D45 FC       lea eax,[local.1]
0040487B  |.  BA 02000000   mov edx,0x2
00404880  |.  E8 D3080F00   call GEditor.004F5158
00404885  |.  8B4D B8       mov ecx,[local.18]
00404888  |.  64:890D 00000>mov dword ptr fs:[0],ecx
0040488F  |.  E9 02020000   jmp GEditor.00404A96
00404894  |>  33C0          xor eax,eax                              ;  eax清零
00404896  |.  8945 AC       mov [local.21],eax                       ;  local 21清零
00404899  |.  33D2          xor edx,edx                              ;  edx清零
0040489B  |.  8955 A8       mov [local.22],edx                       ;  local 22 清零
0040489E  |>  8B4D A8       /mov ecx,[local.22]                      ;  LOCAL 22给ecx
004048A1  |.  0FBE440D 84   |movsx eax,byte ptr ss:[ebp+ecx-0x7C]    ;  取当前循环次数位的ASCII注册码的十六进制值(至于为啥,请参考上一帖)
004048A6  |.  8B55 AC       |mov edx,[local.21]                      ;  第一次相减结果(local 21)给edx 首次为0
004048A9  |.  03C2          |add eax,edx                             ;  当前循环次数位的ASCII注册码的十六进制值+第一次相减结果
004048AB  |.  83C0 D0       |add eax,-0x30                           ;  相加后的eax-30(小于30则溢出)
004048AE  |.  8945 AC       |mov [local.21],eax                      ;  相减后的值给local 21  即第一次相减结果
004048B1  |.  8B4D A8       |mov ecx,[local.22]                      ;  local 22(循环次数)给ecx
004048B4  |.  0FBE440D 84   |movsx eax,byte ptr ss:[ebp+ecx-0x7C]    ;  再次取当前循环次数位的ASCII注册码的十六进制值
004048B9  |.  8B55 9C       |mov edx,[local.25]                      ;  第二次相减结果给edx
004048BC  |.  03C2          |add eax,edx                             ;  当前循环次数位的ASCII注册码的十六进制值+第二次相减结果
004048BE  |.  83C0 D0       |add eax,-0x30                           ;  相加的值-30
004048C1  |.  8945 9C       |mov [local.25],eax                      ;  将相减结果给LOCAL 25 即第二次相减结果
004048C4  |.  FF45 A8       |inc [local.22]                          ;  LOCAL 22 +1  即循环次数
004048C7  |.  8B4D A8       |mov ecx,[local.22]                      ;  循环次数给ecx
004048CA  |.  83F9 09       |cmp ecx,0x9                             ;  当前循环次数与9比较
004048CD  |.^ 7C CF         \jl short GEditor.0040489E               ;  上面的比较小于9 则跳回继续运算,否则不跳
004048CF  |.  8B45 9C       mov eax,[local.25]                       ;  第二次相减结果给eax
004048D2  |.  B9 0A000000   mov ecx,0xA                              ;  A给ecx
004048D7  |.  99            cdq                                      ;  符号位扩展 (注释1)  相减结果不会大于80000000 所以EDX 00000000
004048D8  |.  F7F9          idiv ecx                                 ;  除以A EAX放商 EDX放余数 上面因为小于80000000 所以被除数就是第二次相减结果
004048DA  |.  83C2 30       add edx,0x30                             ;  余数+30,并放回edx
004048DD  |.  8955 9C       mov [local.25],edx                       ;  相加结果给local 25
004048E0  |.  8B45 AC       mov eax,[local.21]                       ;  第一次相加结果给eax
004048E3  |.  3D A0000000   cmp eax,0xA0                             ;  第一次相加结果与A0比较
004048E8  |.  75 0B         jnz short GEditor.004048F5               ;  上面不想等则跳失败,相等则不跳
004048EA  |.  0FBE55 8D     movsx edx,byte ptr ss:[ebp-0x73]         ;  取注册码最后一位 给edx
004048EE  |.  8B4D 9C       mov ecx,[local.25]                       ;  余数+30结果给ecx
004048F1  |.  3BD1          cmp edx,ecx                              ;  最后一位注册码与余数+30比较
004048F3  |.  74 62         je short GEditor.00404957                ;  最后一位注册码小于余数+30,则跳,反之则不跳
004048F5  |>  FF75 AC       push [local.21]
004048F8  |.  68 63814F00   push GEditor.004F8163                    ;  注册失败:注册码号码错误,请核对后输入!%d
004048FD  |.  8D45 FC       lea eax,[local.1]
00404900  |.  50            push eax
00404901  |.  E8 A2090F00   call GEditor.004F52A8
00404906  |.  83C4 0C       add esp,0xC
00404909  |.  6A 00         push 0x0
0040490B  |.  8D45 98       lea eax,[local.26]
0040490E  |.  E8 99010000   call GEditor.00404AAC
00404913  |.  B2 02         mov dl,0x2
00404915  |.  E8 C6010000   call GEditor.00404AE0
0040491A  |.  66:8B08       mov cx,word ptr ds:[eax]
0040491D  |.  B2 01         mov dl,0x1
0040491F  |.  8B45 FC       mov eax,[local.1]
00404922  |.  E8 D1640B00   call GEditor.004BADF8
00404927  |.  8B4D B4       mov ecx,[local.19]
0040492A  |.  8B81 10030000 mov eax,dword ptr ds:[ecx+0x310]
00404930  |.  8B10          mov edx,dword ptr ds:[eax]
00404932  |.  FF92 C0000000 call dword ptr ds:[edx+0xC0]
00404938  |.  FF4D D4       dec [local.11]
0040493B  |.  8D45 FC       lea eax,[local.1]
0040493E  |.  BA 02000000   mov edx,0x2
00404943  |.  E8 10080F00   call GEditor.004F5158
00404948  |.  8B4D B8       mov ecx,[local.18]
0040494B  |.  64:890D 00000>mov dword ptr fs:[0],ecx
00404952  |.  E9 3F010000   jmp GEditor.00404A96
00404957  |>  66:C745 C8 38>mov word ptr ss:[ebp-0x38],0x38          ;  跳到这里说明注册码对了
0040495D  |.  BA 01000080   mov edx,0x80000001
00404962  |.  8B45 A0       mov eax,[local.24]
00404965  |.  E8 1A060F00   call GEditor.004F4F84
0040496A  |.  66:C745 C8 44>mov word ptr ss:[ebp-0x38],0x44
00404970  |.  BA 8C814F00   mov edx,GEditor.004F818C                 ;  \Software\wujian\GEditor3.0



注释1的解释:
对于小白来说 CDQ还是很坑爹的,网上的一句话解释就是 “先把edx的每一位置成eax的最高位(若eax>=0x80000000, 则edx=0xFFFFFFFF;若eax<0x80000000,则edx=0x00000000) ,再把edx扩展为eax的高位。”
可能小白看不明白,我这里就画张图说明吧。
QQ截图20180201181629.png

而这里用的ASCII码,就算是最大的F不减,离80 00 00 00还有好多好多的距离。所以这里的值依然是EAX的值作为被除数

下面是算法的式子

还是假设注册码为  x1 x2 x3 x4 x5 x6 x7 x8 x9 x10   当然,这里也都是十六进制的,用的时候要转换会ASCII码

条件一:x1(必须大于30)-30 + x2(相加结果必须大于30)-30 + x3(相加结果必须大于30)-30…… x9(相加结果必须大于30)-30=A0
条件二:最后一位注册码     x10 <  A0除以A所得的余数+30  然而余数是0,也就是说,最后一位必须为0。(这里偷个懒,因为ASCII码有小于30的,比如% *,前面应该有检测,不能用,我懒得找了……)

至于注册机,不是我这样不懂编程的小白能写得出来的,交给哪位大神吧。。。。。


另外,毕竟本人是小白,难免有各种错误,请各位大佬不吝指出。

下面提供610基友凑出来的一个注册码    H9DAAAADC0       


感谢@610100这位好基友对我错误的及时指出,这里就不么么哒了,我知道你会害羞的。
好开森,又水了一帖………………


软件下载地址:点我下载   
里面有610100基友爆破的软件,在crack文件夹里面,建议研究算法的童鞋先自己研究,毕竟该软件算法不是很难。

嗯……610说了,爆破版有任何问题,他概不负责,他只是负责爆破的……

免费评分

参与人数 20吾爱币 +19 热心值 +15 收起 理由
暴走 + 1 + 1 猫咪签名不错
青鸾火凤 + 2 + 1 帮你破了1024
某中二绅士 + 3 + 1 用心讨论,共获提升!
蜡笔小鑫mini + 1 + 1 求动态图名称!
Poner + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
tudigeming + 1 + 1 gay里gay气又怎样,给你回血
bxz74 + 2 + 1 给你加分
无影寒冬 + 2 谢谢@Thanks!
初亦泽 + 1 我很赞同!
jiehu + 1 + 1 gay里gay气又怎样,百合万岁!!
伍丫i倨仕 + 1 请勿灌水,提高回帖质量是每位会员应尽的义务!
www.52pojie.cn + 2 + 1 他们扣分,哥给你回血!
无痕软件 -1 签名三观不正呀
丶小明 -1 签名搞的这gay里gay气的!必须扣cb!!!
z128436131 -1 + 1 身为小白的我看不懂,扣钱没商量
didi科学家 + 1 + 1 签名gay里gay气
神枪泡泡丶 -1 + 1 大牛我还是看不懂阿
zhaotianrun -1 跟上节奏啊!
610100 -1 + 1 --------
朱朱你堕落了 + 1 + 1 签名的两个女生是拉拉???

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

初亦泽 发表于 2018-2-2 11:38
注册信息在这:计算机\HKEY_CURRENT_USER\Software\wujian\GEditor3.0
删除了就可以重玩了

[Asm] 纯文本查看 复制代码
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;

public class KeyGen {
	
	static int[] intNum= {'1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("");
		GetKey();
	}
	//
	static void GetKey() {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入要生成的密钥数量");
		int num=in.nextInt();
		Random ran=new Random();
		int length=10;
		char[] fakeKey=new char[length];
		boolean judge=true;	
		int[] intKey= new int[10];
		String realKey="";
		int count=0;
		//随机产生一个密钥
		while(judge) {
			int sum=0;
			for(int i=0;i<9;i++) {
				intKey[i]=intNum[ran.nextInt(35)];
			}
			intKey[9]='0';
		
			for(int i=0;i<9;i++) {
				sum=sum+intKey[i];
			}
			sum=sum-9*0x30;
			
			for(int i=0;i<10;i++) {
				fakeKey[i]=(char)intKey[i];
			}
			if(sum==0xA0) {
				 intKey[9]=0x30;
					for(int i=0;i<fakeKey.length;i++) {
						fakeKey[i]=(char)intKey[i];
					}
				 fakeKey[9]='0';
				 realKey=new String(fakeKey);	
				 WriteKeyToFile(realKey);	
				 ++count;
				 while(count>=num) {
					 System.out.println("已经生成"+count+"个密钥,生成的密钥存放在路径:D:/GEditorKey.txt\n");
					 judge=false;
					 break;
				 }
				
			}	
		
		}
	}
	
	static void WriteKeyToFile(String key) {
		try(FileWriter writer=new FileWriter("D:/GEditorKey.txt",true)) {
			writer.write(key+"\r\n");
		}catch(IOException e) {
			System.out.println("写入发生错误:"+e);
		}
			
		
	}
	

}

免费评分

参与人数 3吾爱币 +8 热心值 +3 收起 理由
610100 + 3 + 1 膜拜大佬,好厉害!
Poner + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Ps出来的小赵 + 1 膜拜大神,我要抱大腿~~根部………………

查看全部评分

爱飞的猫 发表于 2018-2-3 08:03
本帖最后由 jixun66 于 2018-2-3 08:11 编辑

https://www.52pojie.cn/thread-694775-1-1.html

用 C++ 和 MFC 做了个注册机模板;注册机需要 VS2017 运行时。

geditor-v3.png

女娲制图 v3 算法注册机.zip (202.86 KB, 下载次数: 12)

放几个吾爱破解专属序列号:
  • LCG-G2LS50
  • LCG-FFK1E0
  • LCG-KP3G80
  • LCG-13MKQ0

另外我不觉得不会编程是借口…
看你分析的逻辑挺清楚,而写代码所需要的无非就是清晰的逻辑,以及一个愿意花时间去查文档的心。

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
Ps出来的小赵 + 2 + 1 我要抱大腿………………根部…………

查看全部评分

3114488 发表于 2018-2-1 19:10
Aaron丶玖瑾 发表于 2018-2-1 19:22
感谢楼主分享!
钰树临风 发表于 2018-2-1 19:57
签名是什么电影
zz0147 发表于 2018-2-1 20:14
同问  签名是什么电影
tangfangxi 发表于 2018-2-1 20:46
签名的两个女生是拉拉???
丶小明 发表于 2018-2-1 21:00
正正经经的发技术贴不好?非要把签名搞得gay里gay气的?还是说你就是gay里gay气?
初亦泽 发表于 2018-2-1 21:23
怎么清除注册信息
八云紫轩 发表于 2018-2-2 02:04
请问一下签名是什么电影?
feng1234 发表于 2018-2-2 08:08 来自手机
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-28 18:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表