InstallShield 的命令行 ISCmdBld.exe 跟踪简记

翠竹心情 的破解挺好用的,只是命令行程序 ISCmdBld.exe 没有破解,这样就不能批处理打包了。

 

趁周末稍微研究了下,但是最后结论还没得出来,先简要记一笔,以后再补充。

 

 

ISCmdBld.exe

 

00419860  /$  6A FF         push    -1                               ;  main 入口

004198EB  |.  E8 D079FEFF   call    004012C0

 

00401376   .  E8 A54E0100   call    00416220                         ;  疑似加载 ISWiBuild.dll

004013C3   .  E8 981B0000   call    00402F60                         ;  这句执行后便会输出 build start at 字样

004013E9   .  FF92 88000000 call    dword ptr [edx+88]               ;  IsWiBuil.6ADE75D0

 

6ADE7637    E8 845C0000     call    6ADED2C0                              ;

 

6ADED366    8D4C24 10       lea     ecx, dword ptr [esp+10]          ; esp+10 处等下会存有输出参数
6ADED36A    66:C74424 10 00>mov     word ptr [esp+10], 0
6ADED371    8B06            mov     eax, dword ptr [esi]
6ADED373    8B90 DC000000   mov     edx, dword ptr [eax+DC]
6ADED379    51              push    ecx
6ADED37A    56              push    esi
6ADED37B    FFD2            call    edx                              ; 这里会进行一番验证
6ADED37D    894424 14       mov     dword ptr [esp+14], eax
6ADED381    8D4424 14       lea     eax, dword ptr [esp+14]
6ADED385    50              push    eax
6ADED386    E8 15DFFDFF     call    6ADCB2A0
6ADED38B    66:837C24 10 00 cmp     word ptr [esp+10], 0             ; 这里检查刚才的验证结果
6ADED391    75 48           jnz     short 6ADED3DB                   ; 关键跳转
6ADED393    8DB424 84010000 lea     esi, dword ptr [esp+184]         ; 这里下去就会抛异常了

 

 

刚才的

6ADED37B    FFD2            call    edx                              ; 这里会进行一番验证
在实际运行中会跳到 ISAppServices.67F109F0:

67F109F0    8B4424 04       mov     eax, dword ptr [esp+4]

...

67F10A22    68 187F1968     push    68197F18                         ; ASCII "IsProductLicenseValid"
67F10A27    50              push    eax
67F10A28    FF15 B4711868   call    dword ptr [<&KERNEL32.GetProcAdd>; kernel32.GetProcAddress
67F10A2E    85C0            test    eax, eax
67F10A30    74 1E           je      short 67F10A50
67F10A32    FFD0            call    eax

 

之后便找 ISUIServices.IsProducetLicenseValid

 

翠竹心情破解的主要文件就是 ISUIServices.dll

 

后来发现一点,把 ISUIServices.dll 换成原版,命令行编译能顺利进行,换成破解版的,就提示许可证过期啥啥。

 

 

一个暂时的解决办法是,把上面

6ADED391    75 48           jnz     short 6ADED3DB                   ; 关键跳转

改成

6ADED391    EB 48           jmp     short 6ADED3DB                   ; 关键跳转

就可以用了

 

文件中地址是 0002D390    (75 -> EB)

 

 

但是,后来的编译过程中,发现它又有几次调用了 ISUIServices.IsProducetLicenseValid,所以这个办法可不可靠还是未知数。

 

暂记,以后有空验证。

 

 

 

 

 

(原发表于 CSDN:https://blog.csdn.net/cnStreamlet/article/details/4125834)

posted on 2009-04-26 16:28  溪流  阅读(67)  评论(0编辑  收藏  举报