²é¿´: 1145  |  »Ø¸´: 1
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

sdlj8051

½ð³æ (ÖøÃûдÊÖ)

[½»Á÷] [zt]FLEXLM ϵͳ¸ß¼¶Ñо¿[תÌù]

ÎÊÌâÃèÊö
³É¹¦Äæ·´IMSL CNL 5.5µÄ±£»¤ºó£¬ÎÒÃǹØ×¢ÆäËüÊÜFLEXLM±£»¤µÄÈí¼þ¡£´ËÀàÈí¼þºÜ¶à¡ªC++/Fortran Compiler 8.0, Intel MKL 5.2, Fluent 6.0, Maple 7.0, Gauss 4.01¡ªÕâЩÈí¼þ¶¼ÓС°permanent uncounted HOSTID=ANY¡±ÀàÐ͵ÄÐí¿É¡£Ðí¶àÈí¼þҲʹÓÃËûÃÇ×Ô¼ºµÄÖîÈçÐòÁкźÍÃÜÂëµÄ±£»¤ÅäÖã¬ÆÆ½â·½·¨´ÓKeygenµ½Patching¶¼ÓУ¬ÀýÈ磺Mathematica, SAS, SPSS, SolidEdge, Matlab, Femlab, MathCAD, Lindo, Origin, Labview, Tecplot¡£ÔÚÕâÀïÎÒÃǸÐÐËȤµÄÊÇÄÇЩʹÓÃFLEXLM±£»¤¶øÃ»ÓС°permanent uncounted HOSTID=ANY¡±Ðí¿ÉµÄÈí¼þ£¬ÎÒÊÖÍ·ÓÐÕâÑùÈý¸ö£ºPGI C++/Fortran Compiler 5.1, Altair HyperWorks 5.0, and ANSYS 8.0£¬ÆäÖÐǰ2¸öÊÇpermanent£¬¿ÉûÓÐHOSTID=ANY£¬²¢Îªcounted£¬×îºóÒ»¸öÉõÖÁ²»ÊÇpermanentµÄ¡£
ÏÖÔÚÎÒÃÇʹÓÃPGIºÍHyperWorks²¢²»¶à£¬¶øANSYS¾­³£Ê¹Óã¬ÆäcountedÐí¿É£¬FLEXLM·þÎñ¶Ëlmgrd.exeºÍvendor daemon£¨Âô·½ºǫ́³ÌÐò£© ansyslmd.exe±ØÐëÏÈÆô¶¯ÒÔ¹©Ó¦ÓóÌÐòµÄÐí¿ÉУÑ飬»ùÓÚIP/ports/socketsµÄC/SͨѶ·½Ê½³£Ê¹ÎҵķÀ»ðǽZoneAlarm Pro 3.7µ¯³ö´°¿Ú£¬Ñ¯ÎÊÊÇ·ñ×èÖ¹/ÔÊÐí£¬ÕâЩÈÃÎҷdz£ÌÖÑᣬËùÒÔ¾ö¶¨ÆÆ½âËü£¨¾¡¹ÜÎÒ¿ÉÒÔÉèÖÃZoneAlarmÈÃlmgrd/ansyslmdÿ´Îͨ¹ý·À»ðǽ£¬µ«ÎÒ²»ÏëÕâÑù×ö£©¡£Òò´ËÕâÆªÎÄÕµÄÄ¿±ê¾ÍÊÇËüÁË¡ªANSYS 8.0¡£
ANSYSÓÐמ޶àµÄfeatures£¬±ÈÎÒÖªµÀÆäËüÈκÎÈí¼þ¶¼¶à£¬Ô­Ðí¿É×ܹ²ÓÐ223¸ö£¬ÕâÀïÖ»ÄÜÁгöǰͷµÄ¼¸ÐС£
SERVER changsha 000795f52adc 1055
DAEMON ansyslmd ansyslmd.exe
INCREMENT ane3fl ansyslmd 9999.9999 12-nov-2006 10 1CEF0B37317C \
VENDOR_STRING=customer:00265231 ISSUED=10-Oct-2003 \
START=10-Oct-2003
INCREMENT ansys ansyslmd 9999.9999 12-nov-2006 10 B1F027206FD0 \
VENDOR_STRING=customer:00265231 ISSUED=10-Oct-2003 \
START=10-Oct-2003
INCREMENT ane3 ansyslmd 9999.9999 12-nov-2006 10 CA5505E0FE07 \
VENDOR_STRING=customer:00265231 ISSUED=10-Oct-2003 \
START=10-Oct-2003
INCREMENT anfl ansyslmd 9999.9999 12-nov-2006 10 1815F7D1236F \
VENDOR_STRING=customer:00265231 ISSUED=10-Oct-2003 \
START=10-Oct-2003

°´¹ßÀý£¬ÎÒÃÇÁгöʹÓõŤ¾ßµÈ
Ä¿±ê:   ANSYS 8.0
±£»¤»úÖÆ:   Macrovision FLEXlm v8.3b
¹¤¾ß:   Microsoft Visual Studio 7.1 (CL, NMAKE, DUMPBIN, LIB, ¡­)
  Microsoft WinDbg 6.1
  RedHat Cygwin 1.3.5
  IDM UltraEdit 9.0
  Datarescue IDA Pro 4.3 (FLAIR, ¡­)
  URSoft W32Dasm 8.9
×ÊÔ´:   Macrovision FLEXlm 9.2 SDK source code

³õ´Î³¢ÊÔ

ÓÉÓÚÓÐÁË[6]µÄ¾­Ñ飬¿ªÊ¼µÄʱºò£¬ÎÒÒÔΪӦ¸ÃÊÇÒ»¼þºÜÇáËɵÄÊÂÇ飬¿ÉÊÂʵ²¢·ÇÈç´Ë£¬Ç°ÃæÓо޴óµÄÕϰ­µÈ×ÅÎÒÃÇ¡£µÚÒ»µã¾ÍÊǸÃÈçºÎµ÷ÊÔansys.exe£¬²»ÏóIMSL CNL»òÕ߯äËüÈí¼þÓв»´óµÄ¿ÉÖ´ÐÐÎļþ£¬ansys.exe¿ÉÊǾ޴óµÄ-50.1Õ×´óС¡£Ê¹ÓÃW32Dasm»òOllyDbg£¨W32DasmÔÚ¼ÓÔØµÄʱºò¾ÍÓÐÂé·³ÁË£©ÊDz»´ó¿ÉÄܵģ¬Visual Studio¡¯s integrated debuggerËÆºõÖ»¶ÔVS½¨Á¢µÄ´úÂëÓÐЧ£¨ÎÒÊÔÁË¡°Debug Processes¡­¡±µ«Ê§°ÜÁË£©£¬SoftICE¿ÉÒÔ£¬µ«Êó±êʹÓÃÓÐÎÊÌ⣬³ý·ÇûÓÐÑ¡ÔñÁËÎҲŻáȥʹÓÃËü¡£ÐÒÔ˵أ¬ÎÒÃÇÕÒµ½ÁË£¬ÄǾÍÊÇWinDbg£¬ËüÄÜʹÓÃÄں˺ÍÓû§Ä£Ê½2ÖÖµ÷ÊÔģʽ£¬ÓµÓÐÓѺõÄÓû§½çÃæºÍ±ê×¼µÄ¿ì½Ý¼ü£¬¸üÖØÒªµÄÊÇÄÜ´¦Àí¾Þ´óµÄ¶þ½øÖÆÎļþ¡£
ʹÓÃWindbg£¬ÖØÒªµÄÊÇÈçºÎ²Ù×ÝÄãµÄÄ¿±êÎļþ£¬Ëü²»ÊÇÒ»´Î°ÑÕû¸ö¾µÏñ×°ÔØµ½ÄÚ´æ¡£µ±ansys.exe±»×°Ôغó£¬ÎÒÃÇÔÚntdll!DbgBreakPoint()Ä£¿é¿ªÍ·£º77F813B1 CC int 3£¬ÎªÁ˵½Óû§´úÂë´¦£¬ÎÒÃǰ´Ctrl+GºÍÊäÈë00401000£¬Ã»ÓÐÈκζ¯¾²£¡ÔÙ´ÎÖØ¸´£¬È´ÓÌÈç±äħÊõ°ãµØÀ´µ½ÁË00401000µØÖ·£¬¾Í¿ÉÒÔÉèÖöϵãµÈµÈÁË£¬ÎÒ²»Çå³þÕâÊÇÔõô»ØÊ£¬µ«È·Êµ¿ÉÒÔÁË¡£
½ÓÏÂÀ´ÎÒÃǸú×Ù³ÌÐò£¬µÃµ½Ò»Ð©½á¹û£¬µ«ÊǶ¼²»ÊǺÜÓÐÓã¬ÈÃÈ˵£ÐĵÄÊÇÎÒÃÇÔÚ¾Þ´óµÄ´úÂëÃÔ¹¬ÀïºÄ·ÑÌ«¶àµÄʱ¼ä¶øÕÒ²»µ½ºËÐÄ£¨Ò²¾ÍÊÇvendor keysºÍencryption seeds£©¡£¾²Ì¬·ÖÎöÒ²ÊÇÒ»¸öÎÊÌ⣬IDAÐèҪ̫³¤µÄʱ¼ä¶Ôansys.exe½øÐÐÈ«²¿·ÖÎö£¬Êý¾ÝÁ¿¿É´ïµ½274Õ×Ö®´ó£¬Ê¹IDA´¦ÓÚ²»Îȶ¨×´Ì¬¡£¿´À´Ã»ÓиüºÃµÄ¹¤¾ß¶ÔÄ¿±ê½øÐе÷ÊÔÁË¡£

ºǫ́³ÌÐòDaemonµÄ¹¥»÷
Æä˼Ïëʹ²»Ö±½Ó¹¥»÷Ä¿±êÎļþ£¬¶ø¹¥»÷ÓëÆäÏà¹ØµÄvendor daemon-ansyslmd.exe£¬ÎÒÃÇÖªµÀËü°üº¬ÁËͬĿ±êÎļþÒ»ÑùµÄkeysºÍseeds£¬¶øÇÒС¶àÁË¡£ÎÒÃÇÒѾ­È·ÈÏÄ¿±êµÄµÄFLEXlmµÄ°æ±¾Ê¹8.3b£¬Í¬9.2SDKÏà²î²»Ô¶£¬ËùÒÔÎÒÃÇÄܹ»´ÓdaemonÖеõ½keys/seeds£¬È»ºóÉú³ÉÎÒÃÇÔ¤ÆÚµÄ¡°permanent uncounted HOSTID=ANY¡±Ðí¿É¡£
¼òµ¥ÔËÐÐansyslmdºóÌáʾ¡°(ansyslmd) Vendor daemons must be run by lmgrd£¨Vendor daemons±ØÐëÓÉlmgrdµ÷ÓÃÔËÐУ©¡±£¬ÎÄÏ×[4][5]Ҳ̸µ½ÁËlmgrdÊDz»Í¬Vendor daemonsµÄµ÷ÓÃÕߣ¬Òò´ËÎÒÃÇÏÈÔËÐÐlmgrd.exe£¬ËüÓɺܺõÄÑ¡ÏîºÍÓ÷¨µÄÃüÁîÐаïÖú¡£
E:\Ansys\v80\ANSYS\licensing\intel>lmgrd
... ...
16:06:54 (lmgrd) Running lmgrd in dedicated windows ...
16:06:54 (lmgrd) Use -z to run in foreground in this window
E:\Ansys\v80\ANSYS\licensing\intel>lmgrd -z -c c:\flexlm\license.dat
... ...
16:13:03 (lmgrd) License file(s): c:\flexlm\license.dat
16:13:03 (lmgrd) lmgrd tcp-port 1055
16:13:03 (lmgrd) Starting vendor daemons ...
16:13:03 (lmgrd) Started ansyslmd (pid 1024)
16:13:03 (ansyslmd) FLEXlm version 8.3b
16:13:03 (ansyslmd) Invalid license key (inconsistent authentication code)
16:13:03 (ansyslmd) ==>INCREMENT ane3fl ansyslmd 9999.9999 permanent uncount
ed 1CEF [...]
16:13:03 (ansyslmd) Invalid license key (inconsistent authentication code)
16:13:03 (ansyslmd) ==>INCREMENT ansys ansyslmd 9999.9999 permanent uncounte
d B1F02 [...]
16:13:03 (ansyslmd) Invalid license key (inconsistent authentication code)
16:13:03 (ansyslmd) ==>INCREMENT ane3 ansyslmd 9999.9999 permanent uncounted
CA5505 [...]
16:13:03 (ansyslmd) Invalid license key (inconsistent authentication code)
16:13:03 (ansyslmd) ==>INCREMENT anfl ansyslmd 9999.9999 permanent uncounted
1815F7 [...]
16:13:03 (ansyslmd) Server started on changsha
16:13:04 (lmgrd) ansyslmd using TCP-port 3056

ÉÏÃæ½ØÍ¼µÄÐí¿ÉÎļþc:\flexlm\license.datÄÚÈÝÌîдÁË¡°permanent uncounted HOSTID=ANY¡±¡£ÓÉÓÚÓÐÏàͬµÄsign´úÂ룬µ±È»»áÓгö´íµÄ±¨¸æ£¬Êµ¼ÊÉÏ£¬ÊÂÇé¸üÔã¸âµÄÊÇ£¬µ±ÎÒÃÇʹÓÃÕâ¸öеÄÊÔÓÃÐí¿ÉÆô¶¯ANSYSʱ£¨Ò²¾ÍÊÇansys.exe±Èlmgrd.exe¸üºÃ£©£¬³ö´íÐÅÏ¢Ìáʾ¡°Local checkout filter reject request (-73, 125)¡±£¬Õⰵʾ×ÅANSYSÀûÓÃÁËFLEXlmÌṩµÄÂ˲¨º¯Êý£¬ÕâÊÇÎÒÃÇÔÚÎÄÏ×[6]ÖÐûÓÐÌÖÂÛµÄÖ÷Ì⣬Æä½«ÔÚºóÃæÒýÆðÎÒÃÇ´óÁ¿µÄÂé·³¡£¸ù¾ÝANSYSµÄÌáʾ£¬ÎÒÃÇÉèÖû·¾³±äÁ¿ANS_FLEXLM_DEBUG=2£¬Í¬Ê±µÃµ½Á˸ü¶àÈçϵÄÐÅÏ¢¡£

changsha: The 'ane3fl' license is a non-demo, uncounted
license. This particular client machine is not permitted to
run with non-demo, uncounted licenses.
(This license line's encryption key: 1CEF0B37317C)
(This could cause a local checkout filter rejection message
for the 'ane3fl' feature.)

²»¹ÜÔõÑù£¬ÎÒÃÇ×°ÔØlmgrd.exeµ½W32DasmºÍIDA ProÖнøÐиú×Ù£¬ÒòΪÎÒÃǵÄFLEXlm¿ª·¢°üÖÐÓÐlmgrd.exeµÄÔ´´úÂ룬²»ÄÑÈ·¶¨º¯Êýµ÷Óá£
sub_00465F80 lmgrd.exe!start()   ; maybe it is in MSVCRT module
00466061: call 00408900     ; call service.c!main()
sub_00408900 service.c!main()
00408985: call 0041B050     ; call l_timers.c!l_real_getenv()
004089B3: call 004022EF     ; call ls_lmgrd.c!main_service_thread()
sub_004022EF ls_lmgrd.c!main_service_thread()
00402315: call 00415C9F     ; call wsock32.c!l__WSAStartup()
00402336: call 00402730     ; call ls_m_init.c!ls_m_init()
00402363: call 0041A470     ; call lm_hosttype.c!lc_hosttype()
00402421: call 0040A26B     ; call LOG()
0040264A - 0040267A     ; while (1) dead loop
00402660: call 0040BDD0     ; call ls_quorum.c!ls_quorum()
00402672: call 00403EC0     ; call ls_m_main.c!ls_m_main(), **daemons = ansyslmd, select_mask = 0
        ; after the call EIP is in ntdll!NtWaitForSingleObject()
sub_00403EC0 ls_m_main.c!ls_m_main()
00403FF5 - 0040473F     ; while (1) infinite loop
00404015: call 00404998     ; call ls_m_main.c!check_chld_died()
0040414F: call 00421AAD     ; call l_date.c!l_get_date()
0040422F: call 00408870     ; call ls_timestamp.c!ls_timestamp()
00404234: call 004081A5     ; call ls_statfile.c!ls_statfile()
004045A4: call 00404745     ; call ls_m_main.c!vendor_start(), *daemons = ansyslmd
00404654: call 00414FD0     ; call l_select.c!l_select()
00404692: call 00404A10     ; call ls_m_process.c!ls_m_process()
00404732: call 0040488B     ; call ls_m_main.c!send_daemons()
sub_00404745 ls_m_main.c!vendor_start()
004047C8: call 00407330     ; call ls_startup.c!ls_startup()
sub_00407330 ls_startup.c!ls_startup()
004077BB: call 00407B8F     ; call ls_startup.c!NT_Startup()
sub_00407B8F ls_startup.c!NT_Startup()
00407D1E: call [00491540]     ; call kernel32!GetStartupInfoA()
00407D92: call [0049154C]     ; call kernel32!

ÕâÊÇÏà¹ØÔ´´úÂë¡£
pcsock.h:
#define WSAStartup(a,b) l__WSAStartup(a,b)
lmclient.h:
#define lm_hosttype(r) lc_hosttype(lm_job, r)
#define lm_daemon(d, o, p) lc_daemon(lm_job, d, o, p)
lsserver.h:
#define LOG(x) {ls_log_prefix(LL_LOGTO_ASCII, 0); (void) ls_log_asc_printf x;}
ls_lmgrd.c:
void main_service_thread(int argc, char *argv[])
{
... ... /* lmgrd.exe is run as app, not service, run_lmgrd_as_service = 0 */
while (1)
{
ls_quorum(main_master_list, "", 0); /* Make sure quorum is up */
ls_m_main(&master_daemons, &select_mask); /* real stuff */
}
}
ls_m_main.c:
void ls_m_main(DAEMON **daemons, SELECT_MASK *select_mask)
{
... ...
if (havequorum && havemaster && !master_ready)
if (q->list[q->master].state & C_MASTER_READY)
{
master_ready = 1;
vendor_start(*daemons);
}
... ...
}

×÷Ϊ×îºóµÄº¯ÊýÊÇkernel32!CreateProcessA()£¬pszCmdlineÃüÁîÊÇ£º
ansyslmd.exe ¨CT changsha 8.3 ¨C1 ¨Cc ¡°c:\flexlm\license.dat¡± ¨Clmgrd_start 40cd5776

[ Last edited by sdlj8051 on 2006-10-6 at 11:24 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

sdlj8051

½ð³æ (ÖøÃûдÊÖ)

Èç¹ûÎÒÃÇÊÔÔËÐеϰ£¬ansyslmdÄܹ»Æô¶¯£¬µ±È»Óгö´íÐÅÏ¢£¬²»¹ýºÜ¿ì¾ÍÍ£Ö¹ÁË¡£ÕâÒâζמ¡¹Üansyslmd±ØÐëÓÉlmgrdµ÷Óã¬Êµ¼ÊÉÏÎÒÃÇÄܹ»Ê¹ÓÃÕýÈ·µÄÃüÁîÑ¡Ïî¿ÉÒÔÖ±½ÓÔËÐÐËü£¬½øÒ»²½ÎÒÃÇÕÒµ½¼òµ¥Óï·¨¾Í¿ÉÒÔÁË¡£
ansyslmd.exe ¨C1 ¨Cc c:\flexlm\license.dat
ÎÒÃǶÔÓÚlmgrd.exeµÄŬÁ¦ÊÇÒ»ÖÖʱ¼äµÄÀË·Ñ£¿Ò²Ðí°É£¬µ«ÊDz»ÒªÌ«¹ý·ÖÁË£¬ÕâЩÇé¿öÔÚÄæÏò¹¤³ÌÀï¾­³£Åöµ½£¬ÈÃÎÒÃǼÌÐø¿´¿´ansyslmd.exe¡£
sub_0045AED6 ansyslmd.exe!start()     ; maybe it is in MSVCRT module
0045AFB4: call 0045B3E0     ; call ls_app_main.c!main()
sub_0045B3E0 ls_app_main.c!main()
0045B42E: call 0045B450     ; call ls_daemon.c!ls_daemon()
sub_0045B450 ls_daemon.c!ls_daemon()
0045B46E: call 0045D100     ; call ls_app_init.c!ls_app_init()
sub_0045D100 ls_app_init.c!ls_app_init()
0045D20D: call 004869E0     ; call lm_new.c!l_n36_buf()
0045D293: call 0040ED51     ; call lm_init.c!lc_init()
0045D3A8: call 00424F50     ; call lm_set_attr.c!lc_set_attr()
0045D50B: call 00476670     ; call ls_s_funcs.c!ls_s_init()
0045E354: call 004804B0     ; call lm_daemon.c!lc_daemon()
0045E3A6: call 0045E6D4     ; call ls_app_init.c!ls_checkhost()
0045E3B7: call 00465A20     ; call ls_init_feat.c!ls_init_feat()
sub_00465A20 ls_init_feat.c!ls_init_feat()
00465A9E: call 00465AF3     ; call ls_init.c!ls_create_feats(), mode = 1, not important
00465AB4: call 00465AF3     ; call ls_init.c!ls_create_feats(), mode = 2, this one counts
00465AEA: call 00472240     ; call lsprfeat.c!ls_print_feats()
sub_00465AF3 ls_init_feat.c!ls_create_feats()
00465B33: call 00465FC3     ; call ls_init_feat.c!ls_feat_validate(), returns 0 if failure
sub_00465FC3 ls_init_feat.c!ls_feat_validate()
00466002: call 00434671     ; call lm_config.c!l_next_conf_or_marker()
00466187: call 004674EE     ; call ls_init_feat.c!good_config()
sub_004674EE ls_init_feat.c!good_config()
004675E2: call 0041889D     ; call lm_ckout.c!l_good_lic_key(), returns 0 if failure
sub_0041889D lm_ckout.c!l_good_lic_key()
00418CE6: call 0041B127     ; call lm_ckout.obj!l_crypt_private()
sub_0041B127 lm_ckout.obj!l_crypt_private()
0041B13D: call 0041B37A     ; call lm_ckout.obj!real_crypt()
sub_0041B37A lm_ckout.obj!real_crypt()
0041BE72: call 0041CE71     ; call lm_ckout.obj!l_string_key()
sub_0041CE71 lm_ckout.obj!l_string_key()
0041D8AC ¨C 0041DB6B     ; if{} block containing L_MOVELONG() macro, not executed
0041DB70 ¨C 0041DC66     ; else{} block, executed
0041DC9A: call 0041E0E3     ; call lm_ckout.obj!our_encrypt()
0041DD75 ¨C 0041DEA4     ; for{} loop comparing signatures

¿´µ½Äǿɰ®µÄl_good_lic_key()ÁËÂð£¿ÎÒÃÇÕýÔÚÆäÖС£½ÓÏÂÀ´µÄÍ¬Ç°ÃæÒ»Ñù£¬¸ú×Ùl_string_key()ºÍ½ÒʾVENDORCODEºÍjob½á¹¹¡£µ«ÊÇÓÉÓÚÂ˲¨º¯ÊýµÄ´æÔÚ£¬l_string_key()µÄÔËÐÐÏÖÔÚÊDz»Ò»ÑùÁË£¬ËùÒÔÎÒÃDZØÐëÔٴμì²él_strkey.c¡£
l_string_key(job, input, inputlen, code, len, license_key)
{
int idx = (*job->vendor) % XOR_SEEDS_ARRAY_SIZ; /* idx = a%20 = 97%20 = 17 = 0x11 */
... ...
for (i = 0; i < length; i++)
{
... ...
if (!user_crypt_filter && !user_crypt_filter_gen
&& (job->flags & LM_FLAG_MAKE_OLD_KEY))
{
... ...
}
else
{
for (k = 0; k < L_STRKEY_BLOCKSIZE; k++)
{
int shift = ((k%4) * 8);
unsigned long mask = 0xffL << shift;
/* SEEDS_XOR = mem_ptr2_bytes defined in l_privat.h */
y[k] ^= (((code->data[k/4] & mask) >> shift)
^ job->SEEDS_XOR[xor_arr[idx][k%4]]);
/* job->flags not NULL, LM_FLAG_MAKE_OLD_KEY = 1 */
if (!(job->flags & LM_FLAG_MAKE_OLD_KEY))
y[k] = reverse_bits(y[k]);
}
}
... ...
}
... ...
for (i = 0; i < j; i++) /* compare user-input and real checksums */
{
... ...
if (user_crypt_filter)
(*user_crypt_filter)(job, &x, i, y);
if (x != y)
return 0;
}
if (user_crypt_filter_gen) /* executed only in keygen, not in checkout */
{
j = L_STRKEY_BLOCKSIZE; /* L_STRKEY_BLOCKSIZE = 8, in lmachdep.h */
if (len == L_SECLEN_SHORT)
j -= 2;
for (i = 0; i < j; i++)
(*user_crypt_filter_gen)(job, &y, i);
}
... ...
}

Â˲¨Æ÷ÒýÆðÁ˼¸¸öÖÁ¹ØÖØÒªµÄ·ÖÖ§¡£l_string_key()ÔÚcheckout (ansyslmd.exe)ºÍkeygen (lmcrypt.exe)½ø³ÌÖж¼±»µ÷Ó㬵±keygen½ø³ÌÖÐÊÇuser_crypt_filter = 0, user_crypt_filter_gen != 0ʱ£¬checkout½ø³ÌÖÐÊÇuser_crypt_filter != 0, user_crypt_filter_gen = 0¡£ÌØ±ðµØ£¬user_crypt_filter = 004098EA ¶ÔÓ¦ÓÚansyslmd£¬Õâ2¸öº¯ÊýÌṩÁËÒ»¸ö¶Ô³Æ×ª»¯µÄ¸½¼Ó²ã¡£
È»¶ø£¬²ØÔÚelse{}´úÂë¿ìǰ£¬code->data[]ºÍjob->mem_ptr2_bytes[]ÈÔ¾ÉxorµØ½ÒʾÁËencryption seeds£¨¼ÓÃÜÖÖ×Ó£©¡£ËùÒÔÎÒÃÇÓÃÀÏ·½·¨¿ÉÒÔ»ñµÃvendor keys ºÍ seeds£¬ÏÂÃæÊÇ´ÓÄÚ´ædumpµÄ¡£
VENDORCODE in ansyslmd.exe!l_string_key()   
[0012E148] - 00000004 ....   int type;
[0012E14C] - b31813e3 ....   code[0], random and different at each run
[0012E150] - 21bf965f _..!   code[1], random and different at each run
[0012E154] - 928689b2 ....   true VENDOR_KEY1
[0012E158] - cd5480b3 ..T.   true VENDOR_KEY2
[0012E15C] - fc17f999 ....   true VENDR_KEY3
[0012E160] - 05dd4739 9G..   true VENDOR_KEY4
[0012E164] - 00030008 ....   FLEXlm version (here is 8.3)
[0012E168] - 38300062 b.08   
[0012E16C] - 0000332e .3..   
[0012E170] - 00000000 ....   
  
job in ansyslmd.exe!l_string_key()   
[002F4068] - 00000066 f...   int type;
[002F406C] - 009800de ....   char *mem_ptr2;
[002F4070] - 5513f8bc ...U   unsigned char mem_ptr2_bytes[12]; random and different at each run
[002F4074] - 006ee662 b.n.   
[002F4078] - 00bf0000 ....   
[002F407C] - 00000000 ....   
[002F4080] - 00000000 ....   
[002F4084] - 00000000 ....   
[002F4088] - 00000000 ....   
[002F408C] - 33656e61 ane3   feature to checkout
[002F4090] - 00006c66 fl..   

×¢Òâidx = 17ºÍÖû»±í¸ø³öxor_arr[17][0] = 0, xor_arr[17][1] = 2, xor_arr[17][2] =4, xor_arr[17][3] = 8£¬ÕâÀïxor²Ù×÷ÊýÓëjob->mem_ptr2_bytes[]Æ¥ÅäµÄÊÇ006213BC£¬ËùÒÔENCRYPTION_SEED1 = code->data[0] ^ 006213BC = B31813E3 ^ 006213BC = B37A005F ENCRYPTION_SEED2 = code->data[1] ^ 006213BC = 21BF965F ^ 006213BC = 21DD85E3¡£

ÔÚÎÒÃÇÌÖÂÛÂ˲¨Æ÷ÈçºÎ¹¤×÷ǰ£¬Ö¸³ö¼¸¼þÖµµÃÖØÊÓµÄÊÂÇ飬Ê×Ïȳõʼ»¯ÔÚls_app_init()ÀïÍê³É£¬ÔÚ´ËÎÒÃÇ¿ÉÒÔºÜÇå³þµØÖªµÀËüÊÇÈçºÎ´¦ÀíÃüÁîÐÐÑ¡Ïî¡£Õâ²»½ö˵Ã÷ÎÒÃÇÏÈǰÔÚansyslmdÖп´µ½µÄÐÐΪ£¬¶øÇÒ°µÊ¾×ÅÖ»Òªargc >= 4£¬vendor daemon¾Í¿ÉÔËÐС£
keysize = (*L_NEW_JOB)(vendor_name, &vcode, 0, 0, 0, 0);
memcpy(vendorkeys, &vcode, sizeof(VENDORCODE)); /* vendorkeys[] comes from lmcode.c */
for (i = 1; i < keysize;i++)
(*L_NEW_JOB)(vendor_name, &vendorkeys, 0, 0, 0, 0);
... ...
if (ls_a_user_crypt_filter)
lc_set_attr(lm_job, LM_A_USER_CRYPT_FILTER, (LM_A_VAL_TYPE)ls_a_user_crypt_filter);
... ...
if (argc < 4) /* check the command line argument number */
{
if ((argc > 1) && (!strcmp(argv[1], "-v" || !strcmp(argv[1], "-V"))
{
printf("%s v%d.%d%s - "COPYRIGHT_STRING(1988) "\n",
lm_job->vendor, lm_job->code.flexlm_version,
lm_job->code.flexlm_revision, lm_job->code.flexlm_patch);
exit(0);
}
else
{
LOG((lmtext("Vendor daemons must be run by lmgrd\n"));
exit(EXIT_BADCALL);
}
}
... ...
master_list = ls_checkhost(master_list);
ls_init_feat(*list);
... ...
µÚ¶þµã£¬ÔÚÀﺯÊý±»µ÷ÓÃÁË2´Î£¬µÚÒ»´Îµ÷ÓÃÊÇÎ޹ؽôÒªµÄ£¬Ö»Óеڶþ´Îµ÷ÓÃÕæÕýÆð×÷Óã¬ËùÒԼǵõ÷ÊÔÊ±Ìø¹ýµÚÒ»´Î¡£
#define CREATE_SUITES 1
#define CREATE_FEATURES 2
... ...
ls_init_feat(LM_SERVER * master_list)
{
... ...
ls_create_feats(features, master_list, &f, CREATE_SUITES);
ls_create_feats(features, master_list, &f, CREATE_FEATURES);
... ...
ls_print_feats();
}
µÚÈý£¬»ñµÃvendor keys ºÍencryption seedsºó£¬ÎÒÃÇ¿ªÊ¼ÔÚFLEXlm SDKÖÐÖØ½¨ÑéÖ¤ËüÃÇ¡£ÔÚ¸ú×ÙÖÐÎÒÃÇÔÚÂ˲¨Æ÷ǰ»ñµÃfeature ane3flµÄhash codeÊÇy=4BE34851A0A5£¬lmcrypt.exe°´µÀÀíÓ¦¸Ã¸ø³öͬÑùµÄÊý×Ö£¬µ«ÊÇÎÒÃÇÔÚ½¨Á¢utilsÖÐÅöµ½ÁËÒ»¸ö±àÒë´íÎó¡£
lmnewgen ansyslmd -o lm_new.c
v8.1+ FLEXlm, non-CRO
lc_init failed: Invalid FLEXlm key data supplied
FLEXlm error: -44,49

¸Ã´íÎóºÄ·ÑÁËÎÒ´óÁ¿µÄʱ¼ä£¬ÉõÖÁ»³ÒÉvendor keysÒ²±»Â˲¨Æ÷Ä£ºýÁË£¨Õâ¸ö´íÎóÔÚlmseeds.hÉú³Éǰ·¢Éú£©¡£×Ðϸ¼ì²éÁËÿ¼þÊÂÇ飬°üÀ¨ÔÚlm_code.hºÍ pc.mak ÖеÄansyslmdÖ®vendorÃû³Æ£¨µÍ¼¶´íÎ󣩣¬µ«ÊÇÈÔÈ»²»ÐС£ÔÚºÁÎÞÍ·Ð÷µÄÇé¿öÏÂΪÁ˽â¾öµ½µ×ΪʲôÎÒ²»µÃ²»µ÷ÊÔlmnewgen.exe£¬×îºóÈ·¶¨Á˵¼Ö´íÎóµÄÔ­ÒòÊÇÎÄÏ×[6]ÖÐÉù³ÆÎÞÓõÄÈý¸ö³£Á¿¡£
lm_ckout.c!l_sg():
x = 0x6f7330b8; /* v8.x */
lmnewgen.c!VKEY5():
x = 0x6f7330b8; /* v8.x */
l_key.c!l_zinit():
/* z = crokey_flag ? 0x67607419 : 0x3cde3ebf; v8.x */
z = crokey_flag ? 0x62586954 : 0x72346B53; /* v9.x */

ËüÃÇÔÚcheckout½ø³ÌûÓÐÓõ½µÄÇé¿öÏÂÊDz»Óõ쬵«ÊÇËüÃÇÔÚvendor keyУÑéʱÔÚkeygenÖвÎÓëÁË£¬ÖÁÉÙÔÚl_zinit()ÖжÔÓÚz£¬ÎÒÃÇÔÚÎÄÏ×[6]Öв»ÄÑ·ÖÎöÕâµã£¬ÎÊÌâÃ÷ÏÔʱ°æ±¾Êý×Ö£º ÔÚÎÄÏ×[6]ÖÐÊÇ9.2£¬¶øÕâÀïÊÇ8.3£¬ÕâÔÚl_zinit()ÊǽôÒªµÄ¡£ÔÚÎÒÃÇl_zinit()ÖеÄÄÚÈݺ󣬱àÒëºÍÁ¬½Ó¶¼Í¨¹ýÁË¡£È»ºóÐÞ¸Älmseeds.h£¬Öؽ¨ºÍÔËÐÐlmcrypt.exe,Êä³öÁË4BE34851A0A5µÄ½á¹û£¬µ½ÏÖÔÚΪֹ£¬ÎÒÃÇ¿ÉÒÔÈ·ÐÅvendor keysºÍencryption seedsÊÇÕæÕýÕýÈ·µÄ¡£
2Â¥2006-08-23 12:40:10
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ sdlj8051 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] ÕÐ08¿¼Êýѧ +7 laoshidan 2026-03-20 16/800 2026-03-24 17:52 by ÎÚÀ­¶ùɽÂö
[¿¼ÑÐ] Çóµ÷¼Á +5 ÁÖ֮Ϧ 2026-03-24 5/250 2026-03-24 17:16 by dick_runner
[¿¼ÑÐ] ²ÄÁÏѧ˶£¬Çóµ÷¼Á 6+3 ÌǺù«888ll 2026-03-22 7/350 2026-03-24 17:11 by helloÆßÆß
[¿¼ÑÐ] 292Çóµ÷¼Á +4 ¶ì¶ì¶ì¶î¶î¶î¶î¶ 2026-03-24 4/200 2026-03-24 16:41 by peike
[¿¼ÑÐ] 277·ÖÇóµ÷¼Á£¬¿çµ÷²ÄÁÏ +3 ¿¼Ñе÷¼Álxh 2026-03-24 3/150 2026-03-24 13:52 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸¹þ¹¤´ó£¬085400£¬320£¬Çóµ÷¼Á +3 gdlf9999 2026-03-24 3/150 2026-03-24 10:08 by ²«»÷518
[¿¼ÑÐ] 07»¯Ñ§280·ÖÇóµ÷¼Á +4 722865 2026-03-23 4/200 2026-03-24 00:01 by chixmc
[¿¼ÑÐ] 291Çóµ÷¼Á +8 hhhhxn.. 2026-03-23 8/400 2026-03-23 23:15 by peike
[¿¼ÑÐ] Ò»Ö¾Ô¸ÎäÀí²ÄÁϹ¤³Ì348Çóµ÷¼Á +6 £þ^£þ©bº¹ 2026-03-19 9/450 2026-03-23 19:53 by pswait
[¿¼ÑÐ] 298Çóµ÷¼Á +8 Éϰ¶6666@ 2026-03-20 8/400 2026-03-23 11:02 by laoshidan
[¿¼ÑÐ] 333Çóµ÷¼Á +6 87639 2026-03-21 10/500 2026-03-23 10:41 by Iveryant
[¿¼ÑÐ] 276Çóµ÷¼Á +3 YNRYG 2026-03-21 4/200 2026-03-23 08:31 by ×íÔÚ·çÀï
[¿¼ÑÐ] ʯºÓ×Ó´óѧ£¨211¡¢Ë«Ò»Á÷£©Ë¶²©Ñо¿Éú³¤ÆÚÕÐÉú¹«¸æ +3 Àî×ÓÄ¿ 2026-03-22 3/150 2026-03-22 21:01 by ÔõôÊÍ»³
[¿¼ÑÐ] Çóµ÷¼ÁÒ»Ö¾Ô¸º£´ó£¬0703»¯Ñ§Ñ§Ë¶304·Ö£¬Óдó´´ÏîÄ¿£¬Ëļ¶Òѹý +6 ÐÒÔËÁ¨Á¨ 2026-03-22 10/500 2026-03-22 20:10 by edmund7
[¿¼ÑÐ] 289Çóµ÷¼Á +7 »³èªÎÕè¤l 2026-03-20 7/350 2026-03-22 15:57 by ColorlessPI
[¿¼ÑÐ] Ò»Ö¾Ô¸±±¾©»¯¹¤´óѧ070300 ѧ˶336Çóµ÷¼Á +5 vvÃÔ 2026-03-21 8/400 2026-03-22 14:20 by ColorlessPI
[¿¼²©] ÕÐÊÕ²©Ê¿1-2ÈË +3 QGZDSYS 2026-03-18 4/200 2026-03-22 10:25 by QGZDSYS
[¿¼ÑÐ] Ò»Ö¾Ô¸ÎäÀí²ÄÁÏ305·ÖÇóµ÷¼Á +6 ÏëÉϰ¶µÄÀðÓã 2026-03-18 7/350 2026-03-21 01:03 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸Î÷ÄϽ»´ó£¬Çóµ÷¼Á +5 ²Ä»¯ÖðÃÎÈË 2026-03-18 5/250 2026-03-21 00:26 by JourneyLucky
[¿¼ÑÐ] 085410È˹¤ÖÇÄÜר˶317Çóµ÷¼Á£¨0854¶¼¿ÉÒÔ£© +4 xbxudjdn 2026-03-18 4/200 2026-03-20 09:07 by ²»168
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û