正確獲得同益起名大師v337 的註冊號――解讀 moon 幫主的妙文
作者gzgzlxg
聲明隻是好奇,沒有別的目的,如有,我就把註冊機發表瞭(已經寫好瞭),不要發信向我要註冊機,我不會發表的,這也是看雪老大的要求,其實我覺得這篇文章已經很過分。按這篇文章,你100%可以得到正確的註冊碼。
工具IDA,OllyDBG
軟件使用我在ACProtect 1.41 -- 同益起名大師 v3.36、v3.37、vp3.33(專業版)完美脫殼中所完美脫殼後的 GoodName.Exe v3.37版。使用脫殼版,跟蹤比較容易,當然你也可以直接使用原版,但會困難一些。
bbs.pediyshowthread.php?threadid=16204
註讀此文前,請先讀 moon 幫主的謎----同益起名大師3.36註冊算法分析,
bbs.pediyshowthread.php?threadid=14716 凡是和moon 相同的部分我就不再多廢筆墨。
本文同時發表在看雪論壇和DFCG,轉載時請保持完整,版主如果覺得不合適可以刪除。
前言:
同益起名的註冊碼驗證遍佈全程序,在主窗體建立,子窗口建立,按鍵操作,對註冊碼和註冊申請碼的驗證無所不在,而且計算方法來回重復,例如獲取註冊申請碼就有三個完全相同的過程,DES 算法也有完整的兩套。我們用來分析註冊碼取的是註冊操作部分,其實在主窗口建立、子窗口建立的過程中都可以進行,因為他們是完全相同的。
這是註冊窗口(Tfxhm)VMT表中的方法表部分,(全表太長)。這些代碼都是在 IDA 中分析得到的。
代碼:--------------------------------------------------------------------------------
......
0055647F TfxhmMethodTable dw 6
00556481 dw 16h
00556483 dd offset Tfxhm@suiButton2Click ;退出按鍵
00556487 aSuibutton2click db 0Fh,'suiButton2Click'
00556497 dw 10h
00556499 dd offset Tfxhm@FormClose ;關閉窗口
0055649D aFormclose_0 db 9,'FormClose'
005564A7 dw 11h
005564A9 dd offset Tfxhm@FormCreate ;建立窗口
005564AD aFormcreate_0 db 0Ah
005564AD db 'FormCreate'
005564B8 dw 16h
005564BA dd offset Tfxhm@suiButton1Click ;註冊按鍵
005564BE aSuibutton1cli ck db 0Fh,'suiButton1Click'
005564CE dw 0Fh
005564D0 dd offset Tfxhm@get_text ;suiButton1Click 調用的校驗註冊申請碼
;和註冊碼並註冊的子過程
005564D4 aGet_text db 8,'get_text'
005564DD dw 0Fh
005564DF dd offset Tfxhm@FormShow ;顯示窗口
005564E3 aFormshow_0 db 8,'FormShow'
005564EC Tfxhm db 5,'Tfxhm' ;類名
005564F2 word_5564F2 dw 5
005564F4 dd offset TsuiForm@VMT@Prt ;父輩 TsuiForm 的 VMT 表指針地址
......
--------------------------------------------------------------------------------
我們分析的所有代碼都是屬於 Tfxhm@get_text 過程和它的子過程的。 Tfxhm@get_text 起始地址: 0055986C
一、 獲取註冊碼第28位
確定你想註冊姓氏的正確筆劃數(必須和同益數據庫中 slzik 所查到的相同,以繁體字筆畫數為準,同益庫中有些字的筆畫數並不正確,這時你可以在同益起名的姓名分析中獲得姓氏的筆畫數)。在下面的字符串中從左到右查尋,得到第 28 位註冊碼:例如,呂:繁體字為 7 劃。(從0開始數)
0123456 7 89012345678901234567890
0AH6CD3 B EF4TRS2PUV5K1MN78YZ9GIJ
得到的字母為 B,這樣我們的註冊碼有如下形式:(31 位)下面是我們的起始註冊碼
123456789012345678901234567 8 901
123456789ABCDEFGHIJKLMNOPQR S TUV
加入第 28 個字母 B,得如下註冊碼:
123456789ABCDEFGHIJKLMNOPQR B TUV
根據 moon 提出的換位法(4*i+1位和4*(i+1)位互換,i=0,1,2,...,末尾不足4位時,最後兩位互換),25<->28位對調,這個B應該在第25 位
為瞭便於調位,寫瞭幾句Delphi的小程序來完成:(這種操作,還是匯編容易,所以實際還是匯編寫的)
代碼:--------------------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var
Str: String;
begin
Str := Edit1.Text;
asm
PushA
Xor Edx, Edx
Mov Esi, Str
Mov Ecx, 7
@1:
Mov Al, [Esi + Edx]
Xchg Al, [Esi + Edx + 3]
Xchg Al, [Esi + Edx]
Dec Ecx
Add Edx, 4
Cmp Ecx, 0
Jnz @1
Mov Al, [Esi + Edx + 1]
Xchg Al, [Esi + Edx + 2]
Xchg Al, [Esi + Edx + 1]
PopA
end;
Edit2.Text := Str;
end;
--------------------------------------------------------------------------------
在 Edit1 中輸入 123456789ABCDEFGHIJKLMNOPQRBTUV,按 Button2 鍵得到下面的新註冊碼:
新註冊碼為:
123456789012345678901234 5 678901
42318675CAB9GEFDKIJHOMNL B QRPTVU
具體分析請看 moon 的解釋。
二、 獲取註冊碼 23~27 位註冊碼
用OD載如 UNGDN.exe (脫殼後的程序)
代碼:--------------------------------------------------------------------------------
Tfxhm@get_text
......
......
0055CF7E mov eax, ds:AppIDAndName_CryHex@Prt ;註冊申請號加姓氏和1FH 異或得到的結果
0055CF83 mov eax, [eax]
0055CF85 call sub_4FED88 ;EncodeFunction1
0055CF8A lea eax, [ebp+var_94] ;這裡斷下獲取計算23-27位的三個字符
0055CF8A ;按照 moon幫主的給出的算法可以獲得
0055CF90 pus eax
0055CF91 lea edx, [ebp+var_98]
0055CF97 mov eax, ds:Serial_CryHex@Prt ;註冊號和 1FH 異或得到的結果
0055CF9C mov eax, [eax]
0055CF9E call CycleConversionStr ;經過 1FH 異或,即還原
0055CFA3 mov eax, [ebp+var_98]
0055CFA9 mov ecx, 5
0055CFAE mov edx, 17h
0055CFB3 call LStrCopy ;取第 23~27位
0055CFB8 mov eax, [ebp+var_94]
0055CFBE lea edx, [ebp+var_90]
0055CFC4 call sub_4F0048 ;進行計算得到三個字符,如果和上面計算得到的三個字符相同,則過
0055CFC9 mov edx, [ebp+var_90]
0055CFCF mov eax, [ebp+var_C]
0055CFD2 call LStrCmp ;關鍵比較,比較兩種方式和數據計算得到的三個字符
0055CFD7 jnz loc_55D157
0055CFDD lea eax, [ebp+var_A0]
0055CFE3 push eax
0055CFE4 lea edx, [ebp+var_A4]
0055CFEA mov eax, ds:Serial_CryHex@Prt
0055CFEF mov eax, [eax]
0055CFF1 call CycleConversionStr
0055CFF6 mov eax, [ebp+var_A4]
0055CFFC mov ecx, 5
0055D001 mov edx, 17h ;取註冊號23~27
0055D006 call LStrCopy
0055D00B mov eax, [ebp+var_A0]
0055D011 lea edx, [ebp+var_9C]
0055D017 call sub_4F0048
0055D01C mov edx, [ebp+var_9C]
0055D022 mov eax, [ebp+var_C]
0055D025 call LStrCmp ;關鍵比較,比較兩種方式和數據計算得到的三個字符,和前面相同
0055D02A jnz loc_55D0EA
0055D030 lea eax, [ebp+var_A8]
0055D036 push eax
0055D037 lea edx, [ebp+var_AC]
0055D03D mov eax, ds:Serial_CryHex@Prt
0055D042 mov eax, [eax]
0055D044 call CycleConversionStr
0055D049 mov eax, [ebp+var_AC]
0055D04F mov ecx, 3
0055D054 mov edx, 1Dh ;取註冊號 29~31 位
0055D059 call LStrCopy
0055D05E mov eax, [ebp+var_A8]
0055D064 call 31decimalToHex ;對29~31位註冊碼進行31進制到十六進制的轉換
0055D069 mov ebx, eax
0055D06B lea eax, [ebp+var_B0]
0055D071 push eax
0055D072 lea edx, [ebp+var_B4]
0055D078 mov eax, ds:Serial_CryHex@Prt ;取註冊號(經過1FH異或處理)
0055D07D mov eax, [eax]
0055D07F call CycleConversionStr ;經過相同的過程還原
0055D084 mov eax, [ebp+var_B4]
0055D08A mov ecx, 1Ch
0055D08F mov edx, 1 ;取註冊號 1~28 位
0055D094 call LStrCopy
0055D099 mov eax, [ebp+var_B0]
0055D09F call SumSerial_1to28 ;做 1~28 位累加(中間還有判斷是否大於27000,見moon幫主的解釋)
0055D0A4 cmp ebx, eax ;關鍵比較,將前面進制轉換得到的數和累加和比較,在這裡下斷點
0055D0A6 jnz loc_55D157 ;因為註冊碼沒有完成,為瞭能夠繼續,暫時將這句 Nop 掉
0055D0AC mov eax, offset a111_2 ; "111"
0055D0B1 call CheckSerial_17to22 ;這裡是獲取 17~22 位註冊碼的入口
0055D0B6 mov [ebp+var_1], al
0055D0B9 cmp [ebp+var_1], 0
0055D0BD jz short loc_55D0CC
0055D0BF lea eax, [ebp+var_C]
0055D0C2 mov edx, offset a111_2 ;"111"
0055D0C7 call LStrLAsg
0055D0CC
0055D0CC loc_55D0CC:
0055D0CC cmp [ebp+var_1], 0
0055D0D0 jz loc_55D157
0055D0D6 mov eax, [ebp+var_C]
0055D0D9 mov edx, offset a111_2 ;"111"
0055D0DE call LStrCmp
0055D0E3 jnz short loc_55D0EA
0055D0E5 call CheckSerial_1to16 ;這裡是獲取 1~16 位註冊碼的入口
--------------------------------------------------------------------------------
在0055CF8A 處下斷點,F9 運行,出現同益啟動畫面後選‘註冊’->‘輸入註冊碼',註冊申請碼是不能修改的,由你的機器的 CPU 和硬盤的參數變化而來。在起名的姓氏中輸入你的姓氏,我這裡是輸入‘呂’,在輸入註冊碼中將上面的 123456789ABCDEFGHIJKLMNOBWRSTUV 註冊碼拷貝到輸入窗口。按註冊鍵,中斷在 0055CF8A ,清除斷點(或關閉),由 [ebp - c] 中的內容,得到三個字符 VRB,記錄下這三個字符,用moon幫主給出的方法:
求逆方法:
1. 執行到00559D0A,然後下:d [ebp-c],記下數據區顯示的正確值x,y,z;
2. 對3個字節的正確值進行調位,得到5個字節a,b,c,d,e,調位方法為:
0,0,0,x7,x6,x5,x4,x3
0,0,0,x2,x1,x0,y5,y4
0,0,0,0 ,y3,y2,y1,y0
0,0,0,y7,y6,z7,z6,z5
0,0,0,z4,z3,z2,z1,z0
3. 根據5個字節查表"0KMT1EIJ2AB34FGH56PYZ7NRS89CDUVX",得到5位註冊碼即為23~27位。
--摘自 moon 幫主文
代碼:--------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
const
Str = '0KMT1EIJ2AB34FGH56PYZ7NRS89CDUVX';
var
X1, X2: Integer;
x, y, z: Char;
a, b, c, d, e: string;
Pin: string;
begin
Pin := Edit1.Text;
x := Pin[1];
y := Pin[2];
z := Pin[3];
x1 := (Byte(x) shr 3) and $1F;
a := Copy(Str, x1 + 1, 1);
x1 := ((Byte(x) shl 2) and $1C) or ((Byte(y) shr 4) and $03);
b := Copy(Str, x1 + 1, 1);
x1 := Byte(y) and $0F;
c := Copy(Str, x1 + 1, 1);
x1 := ((Byte(y) shr 3) and $18) + ((Byte(z) shr 5) and $07);
d := Copy(Str, x1 + 1, 1);
x1 := (Byte(z) and $1F);
e := Copy(Str, x1 + 1, 1);
Edit2.Text := a + b + c + d + e;
end;
--------------------------------------------------------------------------------
在 Edit1 輸入 VRB 按 Button1 鍵,在 Edit2 窗口中給出我們要的結果 B8MBM 。現在來繼續完善我們的註冊碼。將得到的字符串替換原註冊碼中第 23~27 位:
1234567890123456789012 34567 8 901
123456789ABCDEFGHIJKLM B8MBM B TUV
1234567890123456789012345678901
42318675CAB9GEFDKIJH8MBLBBMMTVU
三、 獲得的 17~22 位註冊碼:
在OD中按 Ctrl-F2組合鍵,重新運行程序,將 0055D0A6 的 jnz loc_55D157 Nop 掉
代碼:--------------------------------------------------------------------------------
0055D0A6 jnz loc_55D157 ;因為註冊碼沒有完成,為瞭能夠繼續,暫時將這句 Nop 掉
0055D0AC mov eax, offset a111_2 ;"111"
0055D0B1 call CheckSerial_17to22 ;這裡是獲取 17~22 位註冊碼的入口
跟進 0055D0B1 call CheckSerial_17to22
......
...... 省略
0050C705 mov edx, [ebp+var_20]
0050C708 mov eax, [ebp+var_1C]
0050C70B call DES_EncryStr ;在這裡進行 DES 的 EncryStr 加密運算,運算結果再經過
0050C70B ;另一過程處理,這個子過程我們後面還要用到
0050C710 mov edx, [ebp+var_60] ;moon 文中提到在這個位置獲取 17~22 位註冊碼,可能
0050C710 ;是幫主寫文章時粗心瞭,正確的位置應該在下面刪除第5位
0050C713 lea eax, [ebp+var_20]
0050C716 call LStrLAsg
0050C71B lea ecx, [ebp+var_64]
0050C71E mov eax, [ebp+var_20]
0050C721 mov dl, [eax+5] ;取出 EncryStr 運算結果的字符串的第 5 位
0050C724 mov eax, [ebp+var_20]
0050C727 call DelChr ;將 EncryStr 運算結果中凡是和第5位相同的字母刪除
0050C72C mov edx, [ebp+var_64]
0050C72F lea eax, [ebp+var_20] ;這裡下斷點,從Edx中取前6位,即我們要的第 17-22 位
......
......省略
--------------------------------------------------------------------------------
在 0050C72C 處下斷點,按F9 運行,出現同益啟動畫面後選‘註冊’->‘輸入註冊碼',在起名的姓氏中輸入你的姓氏,我這裡是輸入‘呂’,在輸入註冊碼中將上面的最後得到的註冊碼(42318675CAB9GEFDKIJH8MBLBBMMTVU)拷貝過去。點擊註冊按鍵。中斷在 0050C72F,在Edx 返回一個長度為30的字符串(這個字符串的長度是不一定為30的,要看刪除相同字符的數目而定),取前 6 為,即為我們要的註冊碼的第 17~22位,在我們的例子中得到的字符串是:DEDAHI。現在我們來修改我們的註冊碼:
1234567890123456 789012 34567 8 901
123456789ABCDEFG DEDAHI B8MBM B TUV
1234567890123456789012345678901
42318675CAB9GEFDAEDD8IBHBBMMTVU
四、 獲取 1~16 位註冊碼
代碼:--------------------------------------------------------------------------------
0055D0E5 call CheckSerial_1to16 ;這裡是獲取 1~16 位註冊碼的入口
跟進 call CheckSerial_1to16
......
......省略
00508EEB lea edx, [ebp+var_18]
00508EEE mov eax, ds:AppIDAndName_CryHex@Prt
00508EF3 mov eax, [eax]
00508EF5 call ConversionHex10To16
00508EFA lea eax, [ebp+var_18]
00508EFD lea edx, [ebp+var_8]
00508F00 call ConversionHexAndFNameToStr
00508F05 lea eax, [ebp+var_20]
00508F08 push eax
00508F09 lea edx, [ebp+var_24]
00508F0C mov eax, ds:Serial_CryHex@Prt
00508F11 mov eax, [eax]
00508F13 call CycleConversionStr
00508F18 mov eax, [ebp+var_24]
00508F1B mov ecx, 10h
00508F20 mov edx, 1 ;取註冊號 1~16 位
00508F25 call LStrCopy
00508F2A mov eax, [ebp+var_20]
00508F2D lea ecx, [ebp+var_1C]
00508F30 mov edx, [ebp+var_8]
00508F33 call DES_DecryStr ;這是 DES 的逆運算,我們再跟進
00508F38 mov eax, [ebp+var_1C]
00508F3B lea edx, [ebp+var_18]
00508F3E call ConversionHex10To16
00508F43 lea eax, [ebp+var_18]
00508F46 push eax
00508F47 lea edx, [ebp+var_38]
00508F4A mov eax, ds:AppIDAndName_CryHex@Prt
00508F4F mov eax, [eax]
00508F51 call sub_4FBA70
00508F56 mov eax, [ebp+var_38]
00508F59 lea edx, [ebp+var_34] ;這裡是我們要下斷點的地方
......
...... 省略
跟進 call DES_DecryStr
......
......省略
004F788E lea edx, [ebp+var_C]
004F7891 mov eax, [ebp+var_4]
004F7894 call sub_4E97BC
004F7899 mov ecx, ebx
004F789B mov edx, [ebp+var_8]
004F789E mov eax, [ebp+var_C]
004F78A1 call DecryStr ;DES 逆運算
004F78A6 xor eax, eax ;這裡是 moon 幫主提出下斷點處,還有一些其他相應的做法
;請看 moon 原文。
......
......省略
--------------------------------------------------------------------------------
在OD中按 Ctrl-F2,重新啟動,在00508F59下斷點,同上,將 0055D0A6 的 jnz loc_55D157 Nop 掉,按F9 運行,出現同益啟動畫面後選‘註冊’->‘輸入註冊碼',在起名的姓氏中輸入你的姓氏,我這裡是輸入‘呂’,在輸入註冊碼中將上面的最後得到的註冊碼(42318675CAB9GEFDAEDD8IBHBBMMTVU)拷貝過去。點擊註冊按鍵。中斷在 00508F59,下面是堆棧內容:
代碼:--------------------------------------------------------------------------------
EBP-38 0012F910 00F303D0 ASCII "5FF51115"
EBP-34 0012F914 00000000
EBP-30 0012F918 00000000
EBP-2C 0012F91C 00000000
EBP-28 0012F920 00000000
EBP-24 0012F924 00F30038 ASCII "123456789ABCDEFGDEDAHIB8MBMBTUV"
EBP-20 0012F928 00F29F5C ASCII "123456789ABCDEFG"
EBP-1C 0012F92C 00F3009C
EBP-18 0012F930 C338FAD3
EBP-14 0012F934 DD5CB3D0
EBP-10 0012F938 D5D42656
EBP-C 0012F93C A2BB6C94
EBP-8 0012F940 00F2FFF8 ASCII "M9BJBBRIDE88TNP4"
EBP-4 0012F944 00000000
--------------------------------------------------------------------------------
註意: EBP-38 0 00F2A130 ASCII "5FF51115" 這是我們要的 DES 加密的明文。
EBP-8 0> 00F2FFE4 ASCII "M9BJBBRIDE88TNP4" 這是 Key。
按 moon 幫主的方法,修改兩句代碼,進行逆運算,但我經過努力,總是沒有成功,可能是對 moon 的方法不能深刻的理解,於是決定改用其他的方法。我們註意到如下代碼:
代碼:--------------------------------------------------------------------------------
004F788E lea edx, [ebp+var_C]
004F7891 mov eax, [ebp+var_4]
004F7894 call sub_4E97BC
004F7899 mov ecx, ebx
004F789B mov edx, [ebp+var_8]
004F789E mov eax, [ebp+var_C]
004F78A1 call DecryStr ;DES 逆運算
--------------------------------------------------------------------------------
在最後一句 Call DecryStr 做的其實是DES的逆運算,前面還有一個輔助的運算,我認為,同益的代碼中一定有一個DES的正向運算,即EncryStr,所以我找瞭一下,其實就在上面第三節--獲得的 17~22 位註冊碼中出現過,下面我們跟進這個Call:
代碼:--------------------------------------------------------------------------------
0050C70B call DES_EncryStr
跟進
......
......省略
004F781A lea ecx, [ebp+var_C] ; 返回地址
004F781D mov edx, [ebp+var_8] ; Key = M9BJBBRIDE88TNP4
004F7820 mov eax, [ebp+var_4] ; Str = 5FF51115
004F7823 call EncryStr
004F7828 mov edx, ebx
004F782A mov eax, [ebp+var_C]
004F782D call sub_4E63F4
004F7832 xor eax, eax ;這裡下斷點
......
......省略
--------------------------------------------------------------------------------
可以看出,它和上面的代碼正好相反,我們用下面的方法來獲得 1~16 位的代碼。
接前面,我們中斷在
代碼:--------------------------------------------------------------------------------
00508F59 lea edx, [ebp+var_34]
--------------------------------------------------------------------------------
在代碼窗口中按 Ctrl-G,輸入004F781A,轉移到 004F781A。按 Ctrl-*,將Eip地址改到 004F781A。
代碼:--------------------------------------------------------------------------------
EBP-38 0012F910 00F303D0 ASCII "5FF51115"
EBP-34 0012F914 00000000
EBP-30 0012F918 00000000
EBP-2C 0012F91C 00000000
EBP-28 0012F920 00000000
EBP-24 0012F924 00F30038 ASCII "123456789ABCDEFGDEDAHIB8MBMBTUV"
EBP-20 0012F928 00F29F5C ASCII "123456789ABCDEFG"
EBP-1C 0012F92C 00F3009C
EBP-18 0012F930 C338FAD3
EBP-14 0012F934 DD5CB3D0
EBP-10 0012F938 D5D42656
EBP-C 0012F93C A2BB6C94 結果返回地址,這裡改為 0,程序運行時會自行分配新的內存
EBP-8 0012F940 00F2FFF8 ASCII "M9BJBBRIDE88TNP4"
EBP-4 0012F944 00000000 這裡是 Str 所以將這裡改為 00F303D0,也就是[EBP-38] 指向的地址。
取名最好的網站有:起名通、起名網、周易起名網、得名Pro、樂名堂。
1、起名通
起名通是清華大學“幸福科技實驗室”支持項目,已入駐清華科技園啟迪之星孵化器,成為中關村大數據產業聯盟會員單位,為2010、2011、2012"全國青少年信息學奧賽"贊助商。
起名通集傳統文化精髓和現代育兒科學於一體,建立瞭“現代起名標準”,率先發佈瞭全國首個姓名大數據報告。寶寶樹、寶寶知道等育兒平臺,以及騰訊、360等企業,均接入瞭起名通的起名、測名服務。
2、起名網
起名網是付費及免費起名網站,支持個人取名、公司取名,它將音形義、流行趨勢、心理學暗示等科學起名方法,與傳統文化起名方法相結合,以“隻為一個好名字”為宗旨,百次升級修改,千次資料查詢,萬名寶寶數據調研,十萬名字精選,千萬級大數據分析,隻為讓名字更有內涵。
其取名原理基於漢語語言文學、統計學、心理學、詩詞國學、人工智能科學、數理學、生肖、經典唐詩集/宋詞集等。
3、周易起名網
它以正宗易學理論為起名原則,借鑒楚辭、詩經、唐詩、宋詞,精準分析後起名,力求好聽、吉祥、高分、時尚。多個名字由國學老師審核,最終選定十個最優好名方案,供準爸準媽參考,並針對寶寶後天發展,進行規劃指導。另外在取名過程中,可與起名大師電話視頻,直到滿意為止。
4、得名Pro
得名Pro是付費取名的網站,它使用A+大數據,在體驗層面上擊敗瞭市面上的多個山寨起名平臺,現提供起英文名、起中文名、孩子起名、寶寶起名、寵物起名、改名等服務。其取英文名的本質是選英文名,因為不是native speaker的話,生搬硬造名字更容易鬧出笑話。
因此英文名數據庫的來源,包括美國社保局統計的官方數據、behindthename、imdb中的角色名稱等,網站會利用機器學習給這些名字打上各類標簽,給用戶選擇。
5、樂名堂
付費及免費起名網站,由專註取名三十年的大師團隊傾心打造,核心服務包括寶寶起名,姓名測試,公司起名等,至今已為數萬寶寶成功取名測名。
樂名堂以中華五千年文化底蘊為基礎,結合現代多維的起名方式,基於大數據分析起名用字趨勢,名字流行度分析,避免熱門重名的名字和老舊過時的名字,從兩萬多個漢字中精煉出最適合寶寶的名字,最後再結合音形義等重重篩選,取出寶寶專屬名字。
以上內容參考起名網官網-首頁周易取名網官網-首頁
上一篇:什麼叫香薰SPA?
下一篇:金玉英文起名