| ²é¿´: 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 ] |
» ²ÂÄãϲ»¶
²ÄÁÏѧ˶333Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
289Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
ÊÕ08µ÷¼ÁÉú
ÒѾÓÐ6È˻ظ´
²ÄÁÏר˶ÕÒµ÷¼Á
ÒѾÓÐ5È˻ظ´
085602 289·ÖÇóµ÷¼Á
ÒѾÓÐ5È˻ظ´
»¯¹¤×¨Ë¶Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
274Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
µ÷¼Á
ÒѾÓÐ3È˻ظ´
08¹¤Ñ§µ÷¼Á
ÒѾÓÐ15È˻ظ´
ÕÐ08¿¼Êýѧ
ÒѾÓÐ16È˻ظ´
sdlj8051
½ð³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ¹ó±ö: 0.1
- ½ð±Ò: 1149.8
- ºì»¨: 3
- Ìû×Ó: 2254
- ÔÚÏß: 18.1Сʱ
- ³æºÅ: 71297
- ×¢²á: 2005-05-30
- רҵ: µç·Óëϵͳ
|
Èç¹ûÎÒÃÇÊÔÔËÐеϰ£¬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













»Ø¸´´ËÂ¥
|| !strcmp(argv[1], "-V"
6