UltraISO后期的每个版本基本上都差不多,官网上下载的据传是什么加了白名单,红名单的版本,但即使
是相同版本的MD5值都不同,官网每天都更新。所以我们平时见得最多的就是注册机,注册码,什么李明
啊,王健啊等等,现在最新版的是V9.3.6.2750,好象以前的注册码不能用了,除非你下到的是没名单的
裸体版,手上没有,没办法,只好自己动手了。
首先到官网下载最新版本:
http://www.ezbsystems.com/dl1.php?file=uiso9_cn.exe
注意你下到的程序极可能和我的不一样,下面破文地址是不相同的,但大体思路都一样的。只要不太笨,
照样画葫芦就行了。闲话少话,转入正文:
用PEID检测了下,ASPACK的壳,很简单,用AspackDie.exe一下就解了出来,7.39M。然后OD载入,查找所
有参考文本字符串,这里可以多个选择,什么username,registration,uikey.ini,ultraiso.ini等,原因
?你以前用个注册版的ultraiso都会知道,username是注册表的用户名,,registration是注册码,另外
两个INI是KEYFILE。ultraiso是既可以注册表注册,也可以KEYFILE注册的,启动时是先检查有没有
keyfile,没有的话从注册表里去找注册码,再没有就变试用了。我们的目的很简单,能拦下来就行,反
正它们的代码都在一起。我用的是username来断,查找所有的username,F2都标上断点,F9运行OD,在这
里断下,注意代码可能不一样:
00471104 /$ 55 push ebp
00471105 |. 8BEC mov ebp, esp
00471107 |. 81C4 C4FEFFFF add esp, -13C
0047110D |. 68 E5ED6500 push 0065EDE5 ; ASCII "rt"
00471112 |. FF75 08 push dword ptr [ebp+8]
00471115 |. E8 066E1B00 call 00627F20
0047111A |. 83C4 08 add esp, 8
0047111D |. 8945 E4 mov dword ptr [ebp-1C], eax
00471120 |. 8B45 E4 mov eax, dword ptr [ebp-1C]
00471123 |. 85C0 test eax, eax
00471125 |. 75 07 jnz short 0047112E
00471127 |. 33C0 xor eax, eax
00471129 |. E9 D9020000 jmp 00471407
0047112E |> 8B55 0C mov edx, dword ptr [ebp+C]
00471131 |. C602 00 mov byte ptr [edx], 0
00471134 |. 8B4D 10 mov ecx, dword ptr [ebp+10]
00471137 |. C601 00 mov byte ptr [ecx], 0
0047113A |. E9 85020000 jmp 004713C4
0047113F |> 8A85 C4FEFFFF /mov al, byte ptr [ebp-13C]
00471145 |. 8845 FF |mov byte ptr [ebp-1], al
00471148 |. 8A55 FF |mov dl, byte ptr [ebp-1]
0047114B |. 80FA 23 |cmp dl, 23
0047114E |. 0F84 70020000 |je 004713C4
00471154 |. 8A4D FF |mov cl, byte ptr [ebp-1]
00471157 |. 80F9 3B |cmp cl, 3B
0047115A |. 0F84 64020000 |je 004713C4
00471160 |. 8A45 FF |mov al, byte ptr [ebp-1]
00471163 |. 3C 0D |cmp al, 0D
00471165 |. 0F84 59020000 |je 004713C4
0047116B |. 8A55 FF |mov dl, byte ptr [ebp-1]
0047116E |. 80FA 0A |cmp dl, 0A
00471171 |. 0F84 4D020000 |je 004713C4
00471177 |. 33C9 |xor ecx, ecx
00471179 |. 894D F0 |mov dword ptr [ebp-10], ecx
0047117C |. EB 03 |jmp short 00471181
0047117E |> FF45 F0 |/inc dword ptr [ebp-10]
00471181 |> 8B45 F0 | mov eax, dword ptr [ebp-10]
00471184 |. 0FBE9405 C4FE>||movsx edx, byte ptr [ebp+eax-13C]
0047118C |. 83FA 20 ||cmp edx, 20
0047118F |.^ 74 ED ||je short 0047117E
00471191 |. 8B4D F0 ||mov ecx, dword ptr [ebp-10]
00471194 |. 0FBE840D C4FE>||movsx eax, byte ptr [ebp+ecx-13C]
0047119C |. 83F8 08 ||cmp eax, 8
0047119F |.^ 74 DD |\je short 0047117E
004711A1 |. 33D2 |xor edx, edx
004711A3 |. 8955 EC |mov dword ptr [ebp-14], edx
004711A6 |. 8B4D F0 |mov ecx, dword ptr [ebp-10]
004711A9 |. 0FBE840D C4FE>|movsx eax, byte ptr [ebp+ecx-13C]
004711B1 |. 83F8 27 |cmp eax, 27
004711B4 |. 74 14 |je short 004711CA
004711B6 |. 8B55 F0 |mov edx, dword ptr [ebp-10]
004711B9 |. 0FBE8C15 C4FE>|movsx ecx, byte ptr [ebp+edx-13C]
004711C1 |. 83F9 22 |cmp ecx, 22
004711C4 |. 0F85 88000000 |jnz 00471252
004711CA |> 8B45 F0 |mov eax, dword ptr [ebp-10]
004711CD |. 8A9405 C4FEFF>|mov dl, byte ptr [ebp+eax-13C]
004711D4 |. 8855 F7 |mov byte ptr [ebp-9], dl
004711D7 |. FF45 F0 |inc dword ptr [ebp-10]
004711DA |. EB 17 |jmp short 004711F3
004711DC |> 8B4D F0 |/mov ecx, dword ptr [ebp-10]
004711DF |. 8D840D C4FEFF>||lea eax, dword ptr [ebp+ecx-13C]
004711E6 |. 8B55 EC ||mov edx, dword ptr [ebp-14]
004711E9 |. 8A0C10 ||mov cl, byte ptr [eax+edx]
004711EC |. 84C9 ||test cl, cl
004711EE |. 74 1A ||je short 0047120A
004711F0 |. FF45 EC ||inc dword ptr [ebp-14]
004711F3 |> 8B45 F0 | mov eax, dword ptr [ebp-10]
004711F6 |. 8D9405 C4FEFF>||lea edx, dword ptr [ebp+eax-13C]
004711FD |. 8B4D EC ||mov ecx, dword ptr [ebp-14]
00471200 |. 8A040A ||mov al, byte ptr [edx+ecx]
00471203 |. 8A55 F7 ||mov dl, byte ptr [ebp-9]
00471206 |. 3AC2 ||cmp al, dl
00471208 |.^ 75 D2 |\jnz short 004711DC
0047120A |> 8B4D F0 |mov ecx, dword ptr [ebp-10]
0047120D |. 8D840D C4FEFF>|lea eax, dword ptr [ebp+ecx-13C]
00471214 |. 8B55 EC |mov edx, dword ptr [ebp-14]
00471217 |. 8A0C10 |mov cl, byte ptr [eax+edx]
0047121A |. 8A45 F7 |mov al, byte ptr [ebp-9]
0047121D |. 3AC8 |cmp cl, al
0047121F |. 0F85 9F010000 |jnz 004713C4
00471225 |. 8B55 F0 |mov edx, dword ptr [ebp-10]
00471228 |. 8D8C15 C4FEFF>|lea ecx, dword ptr [ebp+edx-13C]
0047122F |. 8B45 EC |mov eax, dword ptr [ebp-14]
00471232 |. C60401 00 |mov byte ptr [ecx+eax], 0
00471236 |. FF45 EC |inc dword ptr [ebp-14]
00471239 |. EB 17 |jmp short 00471252
0047123B |> 8B55 F0 |/mov edx, dword ptr [ebp-10]
0047123E |. 8D8C15 C4FEFF>||lea ecx, dword ptr [ebp+edx-13C]
00471245 |. 8B45 EC ||mov eax, dword ptr [ebp-14]
00471248 |. 8A1401 ||mov dl, byte ptr [ecx+eax]
0047124B |. 84D2 ||test dl, dl
0047124D |. 74 19 ||je short 00471268
0047124F |. FF45 EC ||inc dword ptr [ebp-14]
00471252 |> 8B4D F0 | mov ecx, dword ptr [ebp-10]
00471255 |. 8D840D C4FEFF>||lea eax, dword ptr [ebp+ecx-13C]
0047125C |. 8B55 EC ||mov edx, dword ptr [ebp-14]
0047125F |. 0FBE0C10 ||movsx ecx, byte ptr [eax+edx]
00471263 |. 83F9 3D ||cmp ecx, 3D
00471266 |.^ 75 D3 |\jnz short 0047123B
00471268 |> 8B45 F0 |mov eax, dword ptr [ebp-10]
0047126B |. 8D9405 C4FEFF>|lea edx, dword ptr [ebp+eax-13C]
00471272 |. 8B4D EC |mov ecx, dword ptr [ebp-14]
00471275 |. 0FBE040A |movsx eax, byte ptr [edx+ecx]
00471279 |. 83F8 3D |cmp eax, 3D
0047127C |. 0F85 42010000 |jnz 004713C4
00471282 |. 8B55 F0 |mov edx, dword ptr [ebp-10]
00471285 |. 8D8C15 C4FEFF>|lea ecx, dword ptr [ebp+edx-13C]
0047128C |. 8B45 EC |mov eax, dword ptr [ebp-14]
0047128F |. C60401 00 |mov byte ptr [ecx+eax], 0
00471293 |. 8B55 F0 |mov edx, dword ptr [ebp-10]
00471296 |. 8B4D EC |mov ecx, dword ptr [ebp-14]
00471299 |. 03D1 |add edx, ecx
0047129B |. 8D85 C5FEFFFF |lea eax, dword ptr [ebp-13B]
004712A1 |. 03D0 |add edx, eax
004712A3 |. 8955 F8 |mov dword ptr [ebp-8], edx
004712A6 |. 8B55 F8 |mov edx, dword ptr [ebp-8]
004712A9 |. 0FBE0A |movsx ecx, byte ptr [edx]
004712AC |. 83F9 27 |cmp ecx, 27
004712AF |. 74 0F |je short 004712C0
004712B1 |. 8B45 F8 |mov eax, dword ptr [ebp-8]
004712B4 |. 0FBE10 |movsx edx, byte ptr [eax]
004712B7 |. 83FA 22 |cmp edx, 22
004712BA |. 0F85 04010000 |jnz 004713C4
004712C0 |> 8B4D F8 |mov ecx, dword ptr [ebp-8]
004712C3 |. 8A01 |mov al, byte ptr [ecx]
004712C5 |. 8845 F7 |mov byte ptr [ebp-9], al
004712C8 |. FF45 F8 |inc dword ptr [ebp-8]
004712CB |. 33D2 |xor edx, edx
004712CD |. 8955 E8 |mov dword ptr [ebp-18], edx
004712D0 |. EB 03 |jmp short 004712D5
004712D2 |> FF45 E8 |/inc dword ptr [ebp-18]
004712D5 |> 8B4D F8 | mov ecx, dword ptr [ebp-8]
004712D8 |. 8B45 E8 ||mov eax, dword ptr [ebp-18]
004712DB |. 8A1401 ||mov dl, byte ptr [ecx+eax]
004712DE |. 8A4D F7 ||mov cl, byte ptr [ebp-9]
004712E1 |. 3AD1 ||cmp dl, cl
004712E3 |. 74 0D ||je short 004712F2
004712E5 |. 8B45 F8 ||mov eax, dword ptr [ebp-8]
004712E8 |. 8B55 E8 ||mov edx, dword ptr [ebp-18]
004712EB |. 8A0C10 ||mov cl, byte ptr [eax+edx]
004712EE |. 84C9 ||test cl, cl
004712F0 |.^ 75 E0 |\jnz short 004712D2
004712F2 |> 8B45 F8 |mov eax, dword ptr [ebp-8]
004712F5 |. 8B55 E8 |mov edx, dword ptr [ebp-18]
004712F8 |. C60410 00 |mov byte ptr [eax+edx], 0
004712FC |. 68 E8ED6500 |push 0065EDE8 ; ASCII "UserName"
OD载入后F9,在这里断下,继续F8运行至本CALL返回
00471301 |. 8D8D C4FEFFFF |lea ecx, dword ptr [ebp-13C]
00471307 |. 8B45 F0 |mov eax, dword ptr [ebp-10]
0047130A |. 03C8 |add ecx, eax
0047130C |. 51 |push ecx
0047130D |. E8 32491B00 |call 00625C44
00471312 |. 83C4 08 |add esp, 8
00471315 |. 85C0 |test eax, eax
00471317 |. 75 13 |jnz short 0047132C
00471319 |. FF75 F8 |push dword ptr [ebp-8]
0047131C |. FF75 0C |push dword ptr [ebp+C]
0047131F |. E8 24471B00 |call 00625A48
00471324 |. 83C4 08 |add esp, 8
00471327 |. E9 98000000 |jmp 004713C4
0047132C |> 68 F1ED6500 |push 0065EDF1 ; ASCII "Registration"
00471331 |. 8D95 C4FEFFFF |lea edx, dword ptr [ebp-13C]
00471337 |. 8B4D F0 |mov ecx, dword ptr [ebp-10]
0047133A |. 03D1 |add edx, ecx
0047133C |. 52 |push edx
0047133D |. E8 02491B00 |call 00625C44
00471342 |. 83C4 08 |add esp, 8
00471345 |. 85C0 |test eax, eax
00471347 |. 75 10 |jnz short 00471359
00471349 |. FF75 F8 |push dword ptr [ebp-8]
0047134C |. FF75 10 |push dword ptr [ebp+10]
0047134F |. E8 F4461B00 |call 00625A48
00471354 |. 83C4 08 |add esp, 8
00471357 |. EB 6B |jmp short 004713C4
00471359 |> 68 FEED6500 |push 0065EDFE ; ASCII "Language"
0047135E |. 8D85 C4FEFFFF |lea eax, dword ptr [ebp-13C]
00471364 |. 8B55 F0 |mov edx, dword ptr [ebp-10]
00471367 |. 03C2 |add eax, edx
00471369 |. 50 |push eax
0047136A |. E8 D5481B00 |call 00625C44
0047136F |. 83C4 08 |add esp, 8
00471372 |. 85C0 |test eax, eax
00471374 |. 75 1D |jnz short 00471393
00471376 |. FF75 F8 |push dword ptr [ebp-8]
00471379 |. E8 C624F9FF |call 00403844
0047137E |. 59 |pop ecx
0047137F |. 8945 E0 |mov dword ptr [ebp-20], eax
00471382 |. 8B4D E0 |mov ecx, dword ptr [ebp-20]
00471385 |. 85C9 |test ecx, ecx
00471387 |. 74 3B |je short 004713C4
00471389 |. 8B45 E0 |mov eax, dword ptr [ebp-20]
0047138C |. A3 BCE66300 |mov dword ptr [63E6BC], eax
00471391 |. EB 31 |jmp short 004713C4
00471393 |> 68 07EE6500 |push 0065EE07 ; ASCII "UltraBurn"
00471398 |. 8D95 C4FEFFFF |lea edx, dword ptr [ebp-13C]
0047139E |. 8B4D F0 |mov ecx, dword ptr [ebp-10]
004713A1 |. 03D1 |add edx, ecx
004713A3 |. 52 |push edx
004713A4 |. E8 9B481B00 |call 00625C44
004713A9 |. 83C4 08 |add esp, 8
004713AC |. 85C0 |test eax, eax
004713AE |. 75 14 |jnz short 004713C4
004713B0 |. 8B45 F8 |mov eax, dword ptr [ebp-8]
004713B3 |. 8945 DC |mov dword ptr [ebp-24], eax
004713B6 |. FF75 DC |push dword ptr [ebp-24]
004713B9 |. E8 3AC41B00 |call 0062D7F8
004713BE |. 59 |pop ecx
004713BF |. A3 504F6400 |mov dword ptr [644F50], eax
004713C4 |> FF75 E4 push dword ptr [ebp-1C]
004713C7 |. 68 18010000 |push 118
004713CC |. 8D95 C4FEFFFF |lea edx, dword ptr [ebp-13C]
004713D2 |. 52 |push edx
004713D3 |. E8 84671B00 |call 00627B5C
004713D8 |. 83C4 0C |add esp, 0C
004713DB |. 85C0 |test eax, eax
004713DD |.^ 0F85 5CFDFFFF \jnz 0047113F
004713E3 |. FF75 E4 push dword ptr [ebp-1C]
004713E6 |. E8 41661B00 call 00627A2C
004713EB |. 59 pop ecx
004713EC |. 8B4D 0C mov ecx, dword ptr [ebp+C]
004713EF |. 8A01 mov al, byte ptr [ecx]
004713F1 |. 84C0 test al, al
004713F3 |. 74 10 je short 00471405
004713F5 |. 8B55 10 mov edx, dword ptr [ebp+10]
004713F8 |. 8A0A mov cl, byte ptr [edx]
004713FA |. 84C9 test cl, cl
004713FC |. 74 07 je short 00471405
004713FE |. B8 01000000 mov eax, 1
00471403 |. EB 02 jmp short 00471407
00471405 |> 33C0 xor eax, eax
00471407 |> 8BE5 mov esp, ebp
00471409 |. 5D pop ebp
0047140A \. C3 retn
这里返回到00471490 |. E8 6FFCFFFF call 00471104
0047140C /$ 55 push ebp
0047140D |. 8BEC mov ebp, esp
0047140F |. 81C4 C8FBFFFF add esp, -438
00471415 |. 68 17EE6500 push 0065EE17 ; ASCII "uikey.ini"
0047141A |. 68 88E06A00 push 006AE088 ; ASCII "D:\Program
Files\UltraISO"
0047141F |. 68 11EE6500 push 0065EE11 ; ASCII "%s\%s"
00471424 |. 8D85 C8FBFFFF lea eax, dword ptr [ebp-438]
0047142A |. 50 push eax
0047142B |. E8 E4881B00 call 00629D14
00471430 |. 83C4 10 add esp, 10
00471433 |. 6A 00 push 0
00471435 |. 8D95 C8FBFFFF lea edx, dword ptr [ebp-438]
0047143B |. 52 push edx
0047143C |. E8 9B631B00 call 006277DC
00471441 |. 83C4 08 add esp, 8
00471444 |. 85C0 test eax, eax
00471446 |. 74 1E je short 00471466
检查是否存在uikey.ini文件,没有就检查是否存在ultraiso.ini文件
00471448 |. 68 27EE6500 push 0065EE27 ; ASCII "ultraiso.ini"
0047144D |. 68 88E06A00 push 006AE088 ; ASCII "D:\Program
Files\UltraISO"
00471452 |. 68 21EE6500 push 0065EE21 ; ASCII "%s\%s"
00471457 |. 8D8D C8FBFFFF lea ecx, dword ptr [ebp-438]
0047145D |. 51 push ecx
0047145E |. E8 B1881B00 call 00629D14
00471463 |. 83C4 10 add esp, 10
00471466 |> 6A 00 push 0
00471468 |. 8D85 C8FBFFFF lea eax, dword ptr [ebp-438]
0047146E |. 50 push eax
0047146F |. E8 68631B00 call 006277DC
00471474 |. 83C4 08 add esp, 8
00471477 |. 85C0 test eax, eax
00471479 0F85 C4000000 jnz 00471542
检查是否存在ultraiso.ini文件,没有就继续检查注册表。
这里可以改成 jnz 00471538,把下面的EAX置1。这样不管有没有uikey.ini,程序都会认为uikey.ini文
件里有用户名及注册码选项。
0047147F |. 8D95 CCFEFFFF lea edx, dword ptr [ebp-134]
00471485 |. 52 push edx
00471486 |. FF75 08 push dword ptr [ebp+8]
00471489 |. 8D8D C8FBFFFF lea ecx, dword ptr [ebp-438]
0047148F |. 51 push ecx
00471490 |. E8 6FFCFFFF call 00471104
刚才的CALL返回后停在这里,CALL的作用是检查uikey.ini或ultraiso.ini文件里的username及
registration选项是否正确,继续F8运行,
00471495 |. 83C4 0C add esp, 0C
00471498 |. 85C0 test eax, eax
0047149A |. 0F84 A2000000 je 00471542
004714A0 |. 33C0 xor eax, eax
004714A2 |. 8945 F0 mov dword ptr [ebp-10], eax
004714A5 |. 33D2 xor edx, edx
004714A7 |. 8955 EC mov dword ptr [ebp-14], edx
004714AA |. EB 27 jmp short 004714D3
004714AC |> 8B4D F0 /mov ecx, dword ptr [ebp-10]
004714AF |. 8A840D CCFEFF>|mov al, byte ptr [ebp+ecx-134]
004714B6 |. 3C 2D |cmp al, 2D
004714B8 |. 74 16 |je short 004714D0
004714BA |. 8B55 0C |mov edx, dword ptr [ebp+C]
004714BD |. 8B4D EC |mov ecx, dword ptr [ebp-14]
004714C0 |. 8B45 F0 |mov eax, dword ptr [ebp-10]
004714C3 |. 8A8405 CCFEFF>|mov al, byte ptr [ebp+eax-134]
004714CA |. 88040A |mov byte ptr [edx+ecx], al
004714CD |. FF45 EC |inc dword ptr [ebp-14]
004714D0 |> FF45 F0 |inc dword ptr [ebp-10]
004714D3 |> 8B55 F0 mov edx, dword ptr [ebp-10]
004714D6 |. 8A8C15 CCFEFF>|mov cl, byte ptr [ebp+edx-134]
004714DD |. 84C9 |test cl, cl
004714DF |.^ 75 CB \jnz short 004714AC
004714E1 |. 8B45 0C mov eax, dword ptr [ebp+C]
004714E4 |. 8B55 EC mov edx, dword ptr [ebp-14]
004714E7 |. C60410 00 mov byte ptr [eax+edx], 0
004714EB |. C745 F4 10000>mov dword ptr [ebp-C], 10
004714F2 |. EB 03 jmp short 004714F7
004714F4 |> FF4D F4 /dec dword ptr [ebp-C]
004714F7 |> 8B4D F4 mov ecx, dword ptr [ebp-C]
004714FA |. 85C9 |test ecx, ecx
004714FC |. 7E 10 |jle short 0047150E
004714FE |. 8B45 0C |mov eax, dword ptr [ebp+C]
00471501 |. 8B55 F4 |mov edx, dword ptr [ebp-C]
00471504 |. 0FBE4C10 FF |movsx ecx, byte ptr [eax+edx-1]
00471509 |. 83F9 58 |cmp ecx, 58
0047150C |.^ 74 E6 \je short 004714F4
0047150E |> 8B45 0C mov eax, dword ptr [ebp+C]
00471511 |. 8B55 F4 mov edx, dword ptr [ebp-C]
00471514 |. C60410 00 mov byte ptr [eax+edx], 0
00471518 |. FF75 08 push dword ptr [ebp+8]
0047151B |. 68 24DC8000 push 0080DC24
00471520 |. E8 23451B00 call 00625A48
00471525 |. 83C4 08 add esp, 8
00471528 |. FF75 0C push dword ptr [ebp+C]
0047152B |. 68 28DD8000 push 0080DD28
00471530 |. E8 13451B00 call 00625A48
00471535 |. 83C4 08 add esp, 8
如果存在uikey.ini或ultraiso文件,并且文件里的username及registration正确,这下面的EAX就置1,
然后不再检查注册表,直接跳至CALL的末尾返回。
00471538 |. B8 01000000 mov eax, 1
0047153D |. E9 CD020000 jmp 0047180F
00471542 |> 8D55 DC lea edx, dword ptr [ebp-24]
00471545 |. 52 push edx ; /pHandle
00471546 |. 68 34EE6500 push 0065EE34 ; |Subkey =
"SOFTWARE\EasyBoot Systems\UltraISO\5.0"
0047154B |. 68 01000080 push 80000001 ; |hKey =
HKEY_CURRENT_USER
00471550 |. E8 C3561C00 call <jmp.&ADVAPI32.RegOpenKeyA> ; \RegOpenKeyA
00471555 |. 85C0 test eax, eax
00471557 |. 74 07 je short 00471560
00471559 |. 33C0 xor eax, eax
0047155B |. E9 AF020000 jmp 0047180F
00471560 |> C745 D4 00010>mov dword ptr [ebp-2C], 100
00471567 |. 8D55 D4 lea edx, dword ptr [ebp-2C]
0047156A |. 52 push edx ; /pBufSize
0047156B |. 8D8D CCFCFFFF lea ecx, dword ptr [ebp-334] ; |
00471571 |. 51 push ecx ; |Buffer
00471572 |. 8D45 D8 lea eax, dword ptr [ebp-28] ; |
00471575 |. 50 push eax ; |pValueType
00471576 |. 6A 00 push 0 ; |Reserved = NULL
00471578 |. 68 5BEE6500 push 0065EE5B ; |ValueName =
"UserName"
这里又断了一下,继续F8运行至本CALL返回
0047157D |. FF75 DC push dword ptr [ebp-24] ; |hKey
00471580 |. E8 A5561C00 call <jmp.&ADVAPI32.RegQueryValueExA> ; \RegQueryValueExA
00471585 |. 85C0 test eax, eax
00471587 |. 75 14 jnz short 0047159D
是否存在username键值,用户名
00471589 |. 8D95 CCFCFFFF lea edx, dword ptr [ebp-334]
0047158F |. 52 push edx
00471590 |. FF75 08 push dword ptr [ebp+8]
00471593 |. E8 B0441B00 call 00625A48
00471598 |. 83C4 08 add esp, 8
0047159B |. EB 07 jmp short 004715A4
0047159D |> 33C0 xor eax, eax
0047159F |. E9 6B020000 jmp 0047180F
004715A4 |> C745 D4 00010>mov dword ptr [ebp-2C], 100
004715AB |. 8D55 D4 lea edx, dword ptr [ebp-2C]
004715AE |. 52 push edx ; /pBufSize
004715AF |. 8D8D CCFCFFFF lea ecx, dword ptr [ebp-334] ; |
004715B5 |. 51 push ecx ; |Buffer
004715B6 |. 8D45 D8 lea eax, dword ptr [ebp-28] ; |
004715B9 |. 50 push eax ; |pValueType
004715BA |. 6A 00 push 0 ; |Reserved = NULL
004715BC |. 68 64EE6500 push 0065EE64 ; |ValueName =
"Registration"
004715C1 |. FF75 DC push dword ptr [ebp-24] ; |hKey
004715C4 |. E8 61561C00 call <jmp.&ADVAPI32.RegQueryValueExA> ; \RegQueryValueExA
004715C9 |. 85C0 test eax, eax
004715CB |. 75 18 jnz short 004715E5
是否存在registration键值,注册码
004715CD |. 8D95 CCFCFFFF lea edx, dword ptr [ebp-334]
004715D3 |. 52 push edx
004715D4 |. 8D8D CCFEFFFF lea ecx, dword ptr [ebp-134]
004715DA |. 51 push ecx
004715DB |. E8 68441B00 call 00625A48
004715E0 |. 83C4 08 add esp, 8
004715E3 |. EB 07 jmp short 004715EC
004715E5 |> 33C0 xor eax, eax
004715E7 |. E9 23020000 jmp 0047180F
004715EC |> FF75 DC push dword ptr [ebp-24] ; /hKey
004715EF |. E8 06561C00 call <jmp.&ADVAPI32.RegCloseKey> ; \RegCloseKey
004715F4 |. 33D2 xor edx, edx
004715F6 |. 8955 F0 mov dword ptr [ebp-10], edx
004715F9 |> 8B4D F0 /mov ecx, dword ptr [ebp-10]
004715FC |. 8A844D CCFEFF>|mov al, byte ptr [ebp+ecx*2-134]
00471603 |. 8845 CF |mov byte ptr [ebp-31], al
00471606 |. 8A55 CF |mov dl, byte ptr [ebp-31]
00471609 |. 80FA 30 |cmp dl, 30
0047160C |. 72 0E |jb short 0047161C
0047160E |. 8A4D CF |mov cl, byte ptr [ebp-31]
00471611 |. 80F9 39 |cmp cl, 39
00471614 |. 77 06 |ja short 0047161C
00471616 |. 8045 CF D0 |add byte ptr [ebp-31], 0D0
0047161A |. EB 2E |jmp short 0047164A
0047161C |> 8A45 CF |mov al, byte ptr [ebp-31]
0047161F |. 3C 61 |cmp al, 61
00471621 |. 72 0E |jb short 00471631
00471623 |. 8A55 CF |mov dl, byte ptr [ebp-31]
00471626 |. 80FA 66 |cmp dl, 66
00471629 |. 77 06 |ja short 00471631
0047162B |. 8045 CF A9 |add byte ptr [ebp-31], 0A9
0047162F |. EB 19 |jmp short 0047164A
00471631 |> 8A4D CF |mov cl, byte ptr [ebp-31]
00471634 |. 80F9 41 |cmp cl, 41
00471637 |. 72 0D |jb short 00471646
00471639 |. 8A45 CF |mov al, byte ptr [ebp-31]
0047163C |. 3C 46 |cmp al, 46
0047163E |. 77 06 |ja short 00471646
00471640 |. 8045 CF C9 |add byte ptr [ebp-31], 0C9
00471644 |. EB 04 |jmp short 0047164A
00471646 |> C645 CF 00 |mov byte ptr [ebp-31], 0
0047164A |> 8A55 CF |mov dl, byte ptr [ebp-31]
0047164D |. C1E2 04 |shl edx, 4
00471650 |. 8B4D F0 |mov ecx, dword ptr [ebp-10]
00471653 |. 88940D CCFDFF>|mov byte ptr [ebp+ecx-234], dl
0047165A |. 8B45 F0 |mov eax, dword ptr [ebp-10]
0047165D |. 8A9445 CDFEFF>|mov dl, byte ptr [ebp+eax*2-133]
00471664 |. 8855 CF |mov byte ptr [ebp-31], dl
00471667 |. 8A4D CF |mov cl, byte ptr [ebp-31]
0047166A |. 80F9 30 |cmp cl, 30
0047166D |. 72 0D |jb short 0047167C
0047166F |. 8A45 CF |mov al, byte ptr [ebp-31]
00471672 |. 3C 39 |cmp al, 39
00471674 |. 77 06 |ja short 0047167C
00471676 |. 8045 CF D0 |add byte ptr [ebp-31], 0D0
0047167A |. EB 2F |jmp short 004716AB
0047167C |> 8A55 CF |mov dl, byte ptr [ebp-31]
0047167F |. 80FA 61 |cmp dl, 61
00471682 |. 72 0E |jb short 00471692
00471684 |. 8A4D CF |mov cl, byte ptr [ebp-31]
00471687 |. 80F9 66 |cmp cl, 66
0047168A |. 77 06 |ja short 00471692
0047168C |. 8045 CF A9 |add byte ptr [ebp-31], 0A9
00471690 |. EB 19 |jmp short 004716AB
00471692 |> 8A45 CF |mov al, byte ptr [ebp-31]
00471695 |. 3C 41 |cmp al, 41
00471697 |. 72 0E |jb short 004716A7
00471699 |. 8A55 CF |mov dl, byte ptr [ebp-31]
0047169C |. 80FA 46 |cmp dl, 46
0047169F |. 77 06 |ja short 004716A7
004716A1 |. 8045 CF C9 |add byte ptr [ebp-31], 0C9
004716A5 |. EB 04 |jmp short 004716AB
004716A7 |> C645 CF 00 |mov byte ptr [ebp-31], 0
004716AB |> 8B4D F0 |mov ecx, dword ptr [ebp-10]
004716AE |. 8A45 CF |mov al, byte ptr [ebp-31]
004716B1 |. 00840D CCFDFF>|add byte ptr [ebp+ecx-234], al
004716B8 |. FF45 F0 |inc dword ptr [ebp-10]
004716BB |. 8B55 F0 |mov edx, dword ptr [ebp-10]
004716BE |. 83FA 10 |cmp edx, 10
004716C1 |.^ 0F8C 32FFFFFF \jl 004715F9
004716C7 |. C745 FC 99F47>mov dword ptr [ebp-4], 3E76F499
004716CE |. 8175 FC 20090>xor dword ptr [ebp-4], 20020920
004716D5 |. FF75 FC push dword ptr [ebp-4]
004716D8 |. 68 71EE6500 push 0065EE71
004716DD |. 8D4D E0 lea ecx, dword ptr [ebp-20]
004716E0 |. 51 push ecx
004716E1 |. E8 2E861B00 call 00629D14
004716E6 |. 83C4 0C add esp, 0C
004716E9 |. 33C0 xor eax, eax
004716EB |. 8945 F0 mov dword ptr [ebp-10], eax
004716EE |> 8B55 F0 /mov edx, dword ptr [ebp-10]
004716F1 |. 8B0C95 28ED65>|mov ecx, dword ptr [edx*4+65ED28]
004716F8 |. 8A440D E0 |mov al, byte ptr [ebp+ecx-20]
004716FC |. 8B55 F0 |mov edx, dword ptr [ebp-10]
004716FF |. 8A8A 48ED6500 |mov cl, byte ptr [edx+65ED48]
00471705 |. 32C1 |xor al, cl
00471707 |. 8B55 F0 |mov edx, dword ptr [ebp-10]
0047170A |. 888415 CCFEFF>|mov byte ptr [ebp+edx-134], al
00471711 |. FF45 F0 |inc dword ptr [ebp-10]
00471714 |. 8B45 F0 |mov eax, dword ptr [ebp-10]
00471717 |. 83F8 08 |cmp eax, 8
0047171A |.^ 7C D2 \jl short 004716EE
0047171C |. FF75 08 push dword ptr [ebp+8]
0047171F |. E8 54431B00 call 00625A78
00471724 |. 59 pop ecx
00471725 |. 8945 F8 mov dword ptr [ebp-8], eax
00471728 |. C745 F4 10000>mov dword ptr [ebp-C], 10
0047172F |. 33C9 xor ecx, ecx
00471731 |. 894D EC mov dword ptr [ebp-14], ecx
00471734 |. 33C0 xor eax, eax
00471736 |. 8945 F0 mov dword ptr [ebp-10], eax
00471739 |. 8B55 F0 mov edx, dword ptr [ebp-10]
0047173C |. 8B4D F4 mov ecx, dword ptr [ebp-C]
0047173F |. 3BD1 cmp edx, ecx
00471741 |. 7D 3D jge short 00471780
00471743 |> 8B45 08 /mov eax, dword ptr [ebp+8]
00471746 |. 8B55 EC |mov edx, dword ptr [ebp-14]
00471749 |. 8A0C10 |mov cl, byte ptr [eax+edx]
0047174C |. 8B45 F0 |mov eax, dword ptr [ebp-10]
0047174F |. 8A9405 CCFDFF>|mov dl, byte ptr [ebp+eax-234]
00471756 |. 32CA |xor cl, dl
00471758 |. 8B45 0C |mov eax, dword ptr [ebp+C]
0047175B |. 8B55 F0 |mov edx, dword ptr [ebp-10]
0047175E |. 880C10 |mov byte ptr [eax+edx], cl
00471761 |. FF45 EC |inc dword ptr [ebp-14]
00471764 |. 8B4D EC |mov ecx, dword ptr [ebp-14]
00471767 |. 8B45 F8 |mov eax, dword ptr [ebp-8]
0047176A |. 3BC8 |cmp ecx, eax
0047176C |. 7C 05 |jl short 00471773
0047176E |. 33D2 |xor edx, edx
00471770 |. 8955 EC |mov dword ptr [ebp-14], edx
00471773 |> FF45 F0 |inc dword ptr [ebp-10]
00471776 |. 8B4D F0 |mov ecx, dword ptr [ebp-10]
00471779 |. 8B45 F4 |mov eax, dword ptr [ebp-C]
0047177C |. 3BC8 |cmp ecx, eax
0047177E |.^ 7C C3 \jl short 00471743
00471780 |> 33D2 xor edx, edx
00471782 |. 8955 EC mov dword ptr [ebp-14], edx
00471785 |. 33C9 xor ecx, ecx
00471787 |. 894D F0 mov dword ptr [ebp-10], ecx
0047178A |. 8B45 F0 mov eax, dword ptr [ebp-10]
0047178D |. 8B55 F4 mov edx, dword ptr [ebp-C]
00471790 |. 3BC2 cmp eax, edx
00471792 |. 7D 35 jge short 004717C9
00471794 |> 8B4D EC /mov ecx, dword ptr [ebp-14]
00471797 |. 8A840D CCFEFF>|mov al, byte ptr [ebp+ecx-134]
0047179E |. 8B55 0C |mov edx, dword ptr [ebp+C]
004717A1 |. 8B4D F0 |mov ecx, dword ptr [ebp-10]
004717A4 |. 30040A |xor byte ptr [edx+ecx], al
004717A7 |. FF45 EC |inc dword ptr [ebp-14]
004717AA |. 8B45 EC |mov eax, dword ptr [ebp-14]
004717AD |. 83F8 08 |cmp eax, 8
004717B0 |. 7C 05 |jl short 004717B7
004717B2 |. 33D2 |xor edx, edx
004717B4 |. 8955 EC |mov dword ptr [ebp-14], edx
004717B7 |> FF45 F0 |inc dword ptr [ebp-10]
004717BA |. 8B4D F0 |mov ecx, dword ptr [ebp-10]
004717BD |. 8B45 F4 |mov eax, dword ptr [ebp-C]
004717C0 |. 3BC8 |cmp ecx, eax
004717C2 |.^ 7C D0 \jl short 00471794
004717C4 |. EB 03 jmp short 004717C9
004717C6 |> FF4D F4 /dec dword ptr [ebp-C]
004717C9 |> 8B55 F4 mov edx, dword ptr [ebp-C]
004717CC |. 85D2 |test edx, edx
004717CE |. 7E 10 |jle short 004717E0
004717D0 |. 8B4D 0C |mov ecx, dword ptr [ebp+C]
004717D3 |. 8B45 F4 |mov eax, dword ptr [ebp-C]
004717D6 |. 0FBE5401 FF |movsx edx, byte ptr [ecx+eax-1]
004717DB |. 83FA 58 |cmp edx, 58
004717DE |.^ 74 E6 \je short 004717C6
004717E0 |> 8B4D 0C mov ecx, dword ptr [ebp+C]
004717E3 |. 8B45 F4 mov eax, dword ptr [ebp-C]
004717E6 |. C60401 00 mov byte ptr [ecx+eax], 0
004717EA |. FF75 08 push dword ptr [ebp+8]
004717ED |. 68 24DC8000 push 0080DC24
004717F2 |. E8 51421B00 call 00625A48
004717F7 |. 83C4 08 add esp, 8
004717FA |. FF75 0C push dword ptr [ebp+C]
004717FD |. 68 28DD8000 push 0080DD28
00471802 |. E8 41421B00 call 00625A48
00471807 |. 83C4 08 add esp, 8
如果注册表存在正确的用户名及注册码,这里EAX就会置1
0047180A |. B8 01000000 mov eax, 1
0047180F |> 8BE5 mov esp, ebp
00471811 |. 5D pop ebp
00471812 \. C3 retn
到这里返回至00402FA9 . E8 5EE40600 call 0047140C
00402F6D . BA FE4D6400 mov edx, 00644DFE ; ASCII "UltraISO"
00402F72 . 8D45 F4 lea eax, dword ptr [ebp-C]
00402F75 . E8 9E2C2300 call 00635C18
00402F7A . FF45 E8 inc dword ptr [ebp-18]
00402F7D . 8B10 mov edx, dword ptr [eax]
00402F7F . A1 98D36A00 mov eax, dword ptr [6AD398]
00402F84 . 8B00 mov eax, dword ptr [eax]
00402F86 . E8 29471E00 call 005E76B4
00402F8B . FF4D E8 dec dword ptr [ebp-18]
00402F8E . 8D45 F4 lea eax, dword ptr [ebp-C]
00402F91 . BA 02000000 mov edx, 2
00402F96 . E8 DD2D2300 call 00635D78
00402F9B . 8D8D B0FDFFFF lea ecx, dword ptr [ebp-250]
00402FA1 . 51 push ecx
00402FA2 . 8D85 B0FEFFFF lea eax, dword ptr [ebp-150]
00402FA8 . 50 push eax
00402FA9 . E8 5EE40600 call 0047140C
检查完ini文件及注册表后,返回到这里,下面的就是关键了。
00402FAE . 83C4 08 add esp, 8
00402FB1 A3 D8526400 mov dword ptr [6452D8], eax
把刚才置1的EAX的值传递至[6452D8],注册标志位为1
00402FB6 8B15 D8526400 mov edx, dword ptr [6452D8]
00402FBC . 85D2 test edx, edx
00402FBE . 74 1D je short 00402FDD
这里不能跳转,需要下面的CALL 004018E8对[678340]和[6380C0]赋值,下面会讲到。
00402FC0 . 8D8D B0FDFFFF lea ecx, dword ptr [ebp-250]
00402FC6 . 51 push ecx
00402FC7 . 8D85 B0FEFFFF lea eax, dword ptr [ebp-150]
00402FCD . 50 push eax
00402FCE . E8 15E9FFFF call 004018E8
这上面的CALL应该就是什么白名单,红名单的检查,即使是正确的用户名及注册码,如果在名单里的,照
样不能正确注册。但这个CALL我们不能在上面的00402FBE处跳转绕开。因为下面的[678340]和[6380C0]需
要它来赋值。
00402FD3 . 83C4 08 add esp, 8
00402FD6 . A3 D8526400 mov dword ptr [6452D8], eax
00402FDB . EB 08 jmp short 00402FE5
00402FDD > 33D2 xor edx, edx
00402FDF . 8915 D8526400 mov dword ptr [6452D8], edx
00402FE5 > C705 BCE66300>mov dword ptr [63E6BC], 804
00402FEF . 8B0D 40836700 mov ecx, dword ptr [678340]
00402FF5 . A1 C0806300 mov eax, dword ptr [6380C0]
00402FFA . 3BC8 cmp ecx, eax
00402FFC . 74 19 je short 00403017
这里验证用户名及注册码是否在限制名单里面,[678340]和[6380C0]两个值相等就跳过注册启动窗口。为
什么知道这里会跳开?因为再往下直至0040330C处才有一处跳转,但那里很明显是用来判断程序是否出错
的,一定要跳,不跳就会退出程序。而0040330C处跳转后再往下至0040332A处,程序就会出现注册窗口,
如果之前EAX赋值[6452D8]为1,程序就会跑飞了。显然这是个关键判断。
我们把00402FFC改成强制跳转试试,jmp short 00403017,F9运行,结果注册窗口不见了,进入主界面,但上
面显示的是试用。晕,看来强跳不行,要让[678340]和[6380C0]两个值相等才行,没办法,只能到上面的
call 004018E8处去改变它们的赋值了。这个看完后面几行代码我们再深入到call 004018E8里面分析。
00402FFE . 8B15 98D36A00 mov edx, dword ptr [6AD398] ; UltraISO.00AA4A94
00403004 . 8B02 mov eax, dword ptr [edx]
00403006 . 8B0D 68D06A00 mov ecx, dword ptr [6AD068] ; UltraISO._frmStartup
0040300C . 8B15 E8F26500 mov edx, dword ptr [65F2E8] ; UltraISO.0065F334
00403012 . E8 914A1E00 call 005E7AA8
00403017 > A1 98D36A00 mov eax, dword ptr [6AD398]
0040301C . 8B00 mov eax, dword ptr [eax]
0040301E . 8B0D 50D06A00 mov ecx, dword ptr [6AD050] ; UltraISO._frmMain
00403024 . 8B15 30C36400 mov edx, dword ptr [64C330] ; UltraISO.0064C37C
0040302A . E8 794A1E00 call 005E7AA8
0040302F . A1 98D36A00 mov eax, dword ptr [6AD398]
00403034 . 8B00 mov eax, dword ptr [eax]
00403036 . 8B0D 58D06A00 mov ecx, dword ptr [6AD058] ;
UltraISO._frmProgress
0040303C . 8B15 8C0F6500 mov edx, dword ptr [650F8C] ; UltraISO.00650FD8
00403042 . E8 614A1E00 call 005E7AA8
00403047 . A1 98D36A00 mov eax, dword ptr [6AD398]
0040304C . 8B00 mov eax, dword ptr [eax]
0040304E . 8B0D 5CD06A00 mov ecx, dword ptr [6AD05C] ; UltraISO._frmProp
00403054 . 8B15 F01E6500 mov edx, dword ptr [651EF0] ; UltraISO.00651F3C
0040305A . E8 494A1E00 call 005E7AA8
0040305F . A1 98D36A00 mov eax, dword ptr [6AD398]
00403064 . 8B00 mov eax, dword ptr [eax]
00403066 . 8B0D 60D06A00 mov ecx, dword ptr [6AD060] ; UltraISO._frmAbout
0040306C . 8B15 142A6500 mov edx, dword ptr [652A14] ; UltraISO.00652A60
00403072 . E8 314A1E00 call 005E7AA8
00403077 . A1 98D36A00 mov eax, dword ptr [6AD398]
0040307C . 8B00 mov eax, dword ptr [eax]
0040307E . 8B0D 64D06A00 mov ecx, dword ptr [6AD064] ; UltraISO._frmCDISO
00403084 . 8B15 6CE86500 mov edx, dword ptr [65E86C] ; UltraISO.0065E8B8
0040308A . E8 194A1E00 call 005E7AA8
0040308F . A1 98D36A00 mov eax, dword ptr [6AD398]
00403094 . 8B00 mov eax, dword ptr [eax]
00403096 . 8B0D 6CD06A00 mov ecx, dword ptr [6AD06C] ;
UltraISO._frmRegister
0040309C . 8B15 D80E6600 mov edx, dword ptr [660ED8] ; UltraISO.00660F24
004030A2 . E8 014A1E00 call 005E7AA8
004030A7 . A1 98D36A00 mov eax, dword ptr [6AD398]
004030AC . 8B00 mov eax, dword ptr [eax]
004030AE . 8B0D 70D06A00 mov ecx, dword ptr [6AD070] ; UltraISO._frmFloppy
004030B4 . 8B15 0C1A6600 mov edx, dword ptr [661A0C] ; UltraISO.00661A58
004030BA . E8 E9491E00 call 005E7AA8
004030BF . A1 98D36A00 mov eax, dword ptr [6AD398]
004030C4 . 8B00 mov eax, dword ptr [eax]
004030C6 . 8B0D 74D06A00 mov ecx, dword ptr [6AD074] ; UltraISO._frmConvert
004030CC . 8B15 44236600 mov edx, dword ptr [662344] ; UltraISO.00662390
004030D2 . E8 D1491E00 call 005E7AA8
004030D7 . A1 98D36A00 mov eax, dword ptr [6AD398]
004030DC . 8B00 mov eax, dword ptr [eax]
004030DE . 8B0D 78D06A00 mov ecx, dword ptr [6AD078] ; UltraISO._frmConfig
004030E4 . 8B15 F8CA6600 mov edx, dword ptr [66CAF8] ; UltraISO.0066CB44
004030EA . E8 B9491E00 call 005E7AA8
004030EF . A1 98D36A00 mov eax, dword ptr [6AD398]
004030F4 . 8B00 mov eax, dword ptr [eax]
004030F6 . 8B0D 7CD06A00 mov ecx, dword ptr [6AD07C] ; UltraISO._frmCheck
004030FC . 8B15 48E06600 mov edx, dword ptr [66E048] ; UltraISO.0066E094
00403102 . E8 A1491E00 call 005E7AA8
00403107 . A1 98D36A00 mov eax, dword ptr [6AD398]
0040310C . 8B00 mov eax, dword ptr [eax]
0040310E . 8B0D 80D06A00 mov ecx, dword ptr [6AD080] ; UltraISO._frmDialog
00403114 . 8B15 1CF16600 mov edx, dword ptr [66F11C] ; UltraISO.0066F168
0040311A . E8 89491E00 call 005E7AA8
0040311F . A1 98D36A00 mov eax, dword ptr [6AD398]
00403124 . 8B00 mov eax, dword ptr [eax]
00403126 . 8B0D 84D06A00 mov ecx, dword ptr [6AD084] ; UltraISO._frmSimSave
0040312C . 8B15 B0F86600 mov edx, dword ptr [66F8B0] ; UltraISO.0066F8FC
00403132 . E8 71491E00 call 005E7AA8
00403137 . A1 98D36A00 mov eax, dword ptr [6AD398]
0040313C . 8B00 mov eax, dword ptr [eax]
0040313E . 8B0D 88D06A00 mov ecx, dword ptr [6AD088] ; UltraISO._frmSession
00403144 . 8B15 30856700 mov edx, dword ptr [678530] ; UltraISO.0067857C
0040314A . E8 59491E00 call 005E7AA8
0040314F . A1 98D36A00 mov eax, dword ptr [6AD398]
00403154 . 8B00 mov eax, dword ptr [eax]
00403156 . 8B0D 8CD06A00 mov ecx, dword ptr [6AD08C] ; UltraISO._frmBurn
0040315C . 8B15 FCC16700 mov edx, dword ptr [67C1FC] ; UltraISO.0067C248
00403162 . E8 41491E00 call 005E7AA8
00403167 . A1 98D36A00 mov eax, dword ptr [6AD398]
0040316C . 8B00 mov eax, dword ptr [eax]
0040316E . 8B0D 90D06A00 mov ecx, dword ptr [6AD090] ;
UltraISO._frmChangeLabel
00403174 . 8B15 90CB6700 mov edx, dword ptr [67CB90] ; UltraISO.0067CBDC
0040317A . E8 29491E00 call 005E7AA8
0040317F . A1 98D36A00 mov eax, dword ptr [6AD398]
00403184 . 8B00 mov eax, dword ptr [eax]
00403186 . 8B0D 94D06A00 mov ecx, dword ptr [6AD094] ; UltraISO._frmLog
0040318C . 8B15 88D06700 mov edx, dword ptr [67D088] ; UltraISO.0067D0D4
00403192 . E8 11491E00 call 005E7AA8
00403197 . A1 98D36A00 mov eax, dword ptr [6AD398]
0040319C . 8B00 mov eax, dword ptr [eax]
0040319E . 8B0D 98D06A00 mov ecx, dword ptr [6AD098] ;
UltraISO._frmFileAttribute
004031A4 . 8B15 68D86700 mov edx, dword ptr [67D868] ; UltraISO.0067D8B4
004031AA . E8 F9481E00 call 005E7AA8
004031AF . A1 98D36A00 mov eax, dword ptr [6AD398]
004031B4 . 8B00 mov eax, dword ptr [eax]
004031B6 . 8B0D 9CD06A00 mov ecx, dword ptr [6AD09C] ;
UltraISO._frmChecksum
004031BC . 8B15 B8EB6700 mov edx, dword ptr [67EBB8] ; UltraISO.0067EC04
004031C2 . E8 E1481E00 call 005E7AA8
004031C7 . A1 98D36A00 mov eax, dword ptr [6AD398]
004031CC . 8B00 mov eax, dword ptr [eax]
004031CE . 8B0D A0D06A00 mov ecx, dword ptr [6AD0A0] ; UltraISO._frmOpenCD
004031D4 . 8B15 C4F96700 mov edx, dword ptr [67F9C4] ; UltraISO.0067FA10
004031DA . E8 C9481E00 call 005E7AA8
004031DF . A1 98D36A00 mov eax, dword ptr [6AD398]
004031E4 . 8B00 mov eax, dword ptr [eax]
004031E6 . 8B0D A4D06A00 mov ecx, dword ptr [6AD0A4] ; UltraISO._frmVCD
004031EC . 8B15 BC116900 mov edx, dword ptr [6911BC] ; UltraISO.00691208
004031F2 . E8 B1481E00 call 005E7AA8
004031F7 . A1 98D36A00 mov eax, dword ptr [6AD398]
004031FC . 8B00 mov eax, dword ptr [eax]
004031FE . 8B0D A8D06A00 mov ecx, dword ptr [6AD0A8] ;
UltraISO._frmPassword
00403204 . 8B15 C4DF6900 mov edx, dword ptr [69DFC4] ; UltraISO.0069E010
0040320A . E8 99481E00 call 005E7AA8
0040320F . A1 98D36A00 mov eax, dword ptr [6AD398]
00403214 . 8B00 mov eax, dword ptr [eax]
00403216 . 8B0D ACD06A00 mov ecx, dword ptr [6AD0AC] ; UltraISO._frmSearch
0040321C . 8B15 98EE6900 mov edx, dword ptr [69EE98] ; UltraISO.0069EEE4
00403222 . E8 81481E00 call 005E7AA8
00403227 . A1 98D36A00 mov eax, dword ptr [6AD398]
0040322C . 8B00 mov eax, dword ptr [eax]
0040322E . 8B0D B0D06A00 mov ecx, dword ptr [6AD0B0] ;
UltraISO._frmCompress
00403234 . 8B15 24F96900 mov edx, dword ptr [69F924] ; UltraISO.0069F970
0040323A . E8 69481E00 call 005E7AA8
0040323F . A1 98D36A00 mov eax, dword ptr [6AD398]
00403244 . 8B00 mov eax, dword ptr [eax]
00403246 . 8B0D B4D06A00 mov ecx, dword ptr [6AD0B4] ;
UltraISO._frmWaitMedia
0040324C . 8B15 98FD6900 mov edx, dword ptr [69FD98] ; UltraISO.0069FDE4
00403252 . E8 51481E00 call 005E7AA8
00403257 . A1 98D36A00 mov eax, dword ptr [6AD398]
0040325C . 8B00 mov eax, dword ptr [eax]
0040325E . 8B0D B8D06A00 mov ecx, dword ptr [6AD0B8] ;
UltraISO._frmDiskImage
00403264 . 8B15 F8046A00 mov edx, dword ptr [6A04F8] ; UltraISO.006A0544
0040326A . E8 39481E00 call 005E7AA8
0040326F . A1 98D36A00 mov eax, dword ptr [6AD398]
00403274 . 8B00 mov eax, dword ptr [eax]
00403276 . 8B0D BCD06A00 mov ecx, dword ptr [6AD0BC] ; UltraISO._frmEncrypt
0040327C . 8B15 B80B6A00 mov edx, dword ptr [6A0BB8] ; UltraISO.006A0C04
00403282 . E8 21481E00 call 005E7AA8
00403287 . A1 98D36A00 mov eax, dword ptr [6AD398]
0040328C . 8B00 mov eax, dword ptr [eax]
0040328E . 8B0D C0D06A00 mov ecx, dword ptr [6AD0C0] ;
UltraISO._frmImageFormat
00403294 . 8B15 44136A00 mov edx, dword ptr [6A1344] ; UltraISO.006A1390
0040329A . E8 09481E00 call 005E7AA8
0040329F . A1 98D36A00 mov eax, dword ptr [6AD398]
004032A4 . 8B00 mov eax, dword ptr [eax]
004032A6 . 8B0D C4D06A00 mov ecx, dword ptr [6AD0C4] ;
UltraISO._frmDiskProperty
004032AC . 8B15 2C1F6A00 mov edx, dword ptr [6A1F2C] ; UltraISO.006A1F78
004032B2 . E8 F1471E00 call 005E7AA8
004032B7 . A1 98D36A00 mov eax, dword ptr [6AD398]
004032BC . 8B00 mov eax, dword ptr [eax]
004032BE . 8B0D C8D06A00 mov ecx, dword ptr [6AD0C8] ;
UltraISO._frmCustomImage
004032C4 . 8B15 70276A00 mov edx, dword ptr [6A2770] ; UltraISO.006A27BC
004032CA . E8 D9471E00 call 005E7AA8
004032CF . A1 98D36A00 mov eax, dword ptr [6AD398]
004032D4 . 8B00 mov eax, dword ptr [eax]
004032D6 . 8B0D CCD06A00 mov ecx, dword ptr [6AD0CC] ;
UltraISO._frmUSBWrite
004032DC . 8B15 AC476A00 mov edx, dword ptr [6A47AC] ; UltraISO.006A47F8
004032E2 . E8 C1471E00 call 005E7AA8
004032E7 . A1 98D36A00 mov eax, dword ptr [6AD398]
004032EC . 8B00 mov eax, dword ptr [eax]
004032EE . 8B0D D0D06A00 mov ecx, dword ptr [6AD0D0] ; UltraISO._frmPart
004032F4 . 8B15 B0536A00 mov edx, dword ptr [6A53B0] ; UltraISO.006A53FC
004032FA . E8 A9471E00 call 005E7AA8
004032FF . 68 18D66A00 push 006AD618
00403304 . E8 FB150A00 call 004A4904
00403309 . 59 pop ecx
0040330A . 85C0 test eax, eax
0040330C . 74 0D je short 0040331B
很明显是程序出错时才用的,用来退出程序,这里一定要跳的。显然不是关键判断。
0040330E . FF35 CCE86600 push dword ptr [66E8CC] ; /ExitCode = FFFFFFFF
00403314 . E8 9B392300 call <jmp.&KERNEL32.ExitProcess> ; \ExitProcess
00403319 . EB 07 jmp short 00403322
0040331B > 33C0 xor eax, eax
0040331D . A3 CCE86600 mov dword ptr [66E8CC], eax
00403322 > 8B15 98D36A00 mov edx, dword ptr [6AD398] ; UltraISO.00AA4A94
00403328 . 8B02 mov eax, dword ptr [edx]
0040332A . E8 F9471E00 call 005E7B28
这上面的CALL会弹出注册窗口,但如果之前EAX被赋值1,并传递给[6452D8]的,这里就会跑飞,不显示注
册窗口。
F7追进CALL里后发现是N个循环后才会出现NAG窗口,显然不是靠跳转能去掉的,要靠上面的参数传递来产
生NAG窗口或程序主界面。所以只能从上面的代码去发掘了。
0040332F . 66:C745 DC 00>mov word ptr [ebp-24], 0
00403335 . E9 83000000 jmp 004033BD
0040333A . 8B15 98D36A00 mov edx, dword ptr [6AD398] ; UltraISO.00AA4A94
00403340 . 8B02 mov eax, dword ptr [edx]
00403342 . 8B55 F8 mov edx, dword ptr [ebp-8]
00403345 . E8 D64A1E00 call 005E7E20
0040334A . EB 66 jmp short 004033B2
0040334C . 66:C745 DC 20>mov word ptr [ebp-24], 20
00403352 . 8D4D CC lea ecx, dword ptr [ebp-34]
00403355 . 51 push ecx
00403356 . 6A 00 push 0
00403358 . 6A 00 push 0
0040335A . 6A 00 push 0
0040335C . 6A 01 push 1
0040335E . 68 3C344000 push 0040343C ; 入口地址
00403363 . 6A 00 push 0
00403365 . 66:C745 DC 2C>mov word ptr [ebp-24], 2C
0040336B . BA 074E6400 mov edx, 00644E07
00403370 . 8D45 F0 lea eax, dword ptr [ebp-10]
00403373 . E8 A0282300 call 00635C18
00403378 . FF45 E8 inc dword ptr [ebp-18]
0040337B . 8B08 mov ecx, dword ptr [eax]
0040337D . B2 01 mov dl, 1
0040337F . A1 0C945900 mov eax, dword ptr [59940C]
00403384 . E8 2BB51900 call 0059E8B4
00403389 . 50 push eax
0040338A . 68 D8334000 push 004033D8
0040338F . E8 25FB2200 call 00632EB9
00403394 . 83C4 24 add esp, 24
00403397 . 8B0D 98D36A00 mov ecx, dword ptr [6AD398] ; UltraISO.00AA4A94
0040339D . 8B01 mov eax, dword ptr [ecx]
0040339F . 8B55 FC mov edx, dword ptr [ebp-4]
004033A2 . E8 794A1E00 call 005E7E20
004033A7 . 66:C745 DC 28>mov word ptr [ebp-24], 28
004033AD . E8 28FD2200 call 006330DA
004033B2 > 66:C745 DC 10>mov word ptr [ebp-24], 10
004033B8 . E8 1DFD2200 call 006330DA
004033BD > A1 CCE86600 mov eax, dword ptr [66E8CC]
004033C2 . 8B55 CC mov edx, dword ptr [ebp-34]
004033C5 . 64:8915 00000>mov dword ptr fs:[0], edx
004033CC . 5F pop edi
004033CD . 5E pop esi
004033CE . 5B pop ebx
004033CF . 8BE5 mov esp, ebp
004033D1 . 5D pop ebp
004033D2 . C2 1000 retn 10
============================================================================================
================================
我们OD重新载入,在00471477处下断,把
00471479 0F85 C4000000 jnz 00471542
处改成
00471479 0F85 B9000000 jnz 00471538
让EAX置1,并直接跳转直至返回至00402FA9 . E8 5EE40600 call 0047140C处,F8几步后,来到
00402FCE . E8 15E9FFFF call 004018E8处,再F7进入CALL里,看看哪些地方对[678340]和
[6380C0]进行赋值的。细一看,有好几处呢,我们从CALL的底部和往上追寻最后赋值的地方:
004018E8 $ 55 push ebp
004018E9 . 8BEC mov ebp, esp
004018EB . 81C4 38FBFFFF add esp, -4C8
004018F1 . 33C0 xor eax, eax
004018F3 . 8945 FC mov dword ptr [ebp-4], eax
004018F6 . 33D2 xor edx, edx
004018F8 . 8955 F8 mov dword ptr [ebp-8], edx
004018FB . 33C9 xor ecx, ecx
004018FD . 894D F4 mov dword ptr [ebp-C], ecx
00401900 . 33C0 xor eax, eax
00401902 . 8945 F0 mov dword ptr [ebp-10], eax
00401905 . 33D2 xor edx, edx
00401907 . 8955 EC mov dword ptr [ebp-14], edx
0040190A . 6A 05 push 5
0040190C . 6A 30 push 30
0040190E . 8D4D E4 lea ecx, dword ptr [ebp-1C]
00401911 . 51 push ecx
00401912 . E8 B13F2200 call 006258C8
00401917 . 83C4 0C add esp, 0C
0040191A . C645 E4 31 mov byte ptr [ebp-1C], 31
0040191E . C645 E8 31 mov byte ptr [ebp-18], 31
00401922 . C645 E9 00 mov byte ptr [ebp-17], 0
00401926 . 6A 10 push 10
00401928 . 6A 41 push 41
0040192A . 8D85 A4FCFFFF lea eax, dword ptr [ebp-35C]
00401930 . 50 push eax
00401931 . E8 923F2200 call 006258C8
00401936 . 83C4 0C add esp, 0C
00401939 . C685 B3FCFFFF>mov byte ptr [ebp-34D], 31
00401940 . C685 B2FCFFFF>mov byte ptr [ebp-34E], 44
00401947 . C685 A6FCFFFF>mov byte ptr [ebp-35A], 30
0040194E . C685 A7FCFFFF>mov byte ptr [ebp-359], 46
00401955 . C685 A9FCFFFF>mov byte ptr [ebp-357], 46
0040195C . C685 A8FCFFFF>mov byte ptr [ebp-358], 38
00401963 . C685 ABFCFFFF>mov byte ptr [ebp-355], 32
0040196A . 8D55 D0 lea edx, dword ptr [ebp-30]
0040196D . 52 push edx
0040196E . E8 51092300 call 006322C4
00401973 . 59 pop ecx
00401974 . C685 AEFCFFFF>mov byte ptr [ebp-352], 36
0040197B . C685 AAFCFFFF>mov byte ptr [ebp-356], 36
00401982 . C685 AFFCFFFF>mov byte ptr [ebp-351], 45
00401989 . C685 B0FCFFFF>mov byte ptr [ebp-350], 39
00401990 . C685 B1FCFFFF>mov byte ptr [ebp-34F], 37
00401997 . C685 A5FCFFFF>mov byte ptr [ebp-35B], 37
0040199E . C685 B4FCFFFF>mov byte ptr [ebp-34C], 0
004019A5 . 33C9 xor ecx, ecx
004019A7 . 890D B4E66300 mov dword ptr [63E6B4], ecx
004019AD . 8D45 F4 lea eax, dword ptr [ebp-C]
004019B0 . 50 push eax
004019B1 . FF75 0C push dword ptr [ebp+C]
004019B4 . E8 37E50700 call 0047FEF0
004019B9 . 83C4 08 add esp, 8
004019BC . 8B55 D0 mov edx, dword ptr [ebp-30]
004019BF . F7D2 not edx
004019C1 . 8915 40836700 mov dword ptr [678340], edx
004019C7 . 8D4D FC lea ecx, dword ptr [ebp-4]
004019CA . 51 push ecx
004019CB . 8D85 A4FCFFFF lea eax, dword ptr [ebp-35C]
004019D1 . 50 push eax
004019D2 . E8 19E50700 call 0047FEF0
004019D7 . 83C4 08 add esp, 8
004019DA . 8D55 F8 lea edx, dword ptr [ebp-8]
004019DD . 52 push edx
004019DE . 8D4D E4 lea ecx, dword ptr [ebp-1C]
004019E1 . 51 push ecx
004019E2 . E8 09E50700 call 0047FEF0
004019E7 . 83C4 08 add esp, 8
004019EA . 8D45 EC lea eax, dword ptr [ebp-14]
004019ED . 50 push eax
004019EE . FF75 FC push dword ptr [ebp-4]
004019F1 . FF75 F8 push dword ptr [ebp-8]
004019F4 . FF75 F4 push dword ptr [ebp-C]
004019F7 . E8 54D30700 call 0047ED50
004019FC . 83C4 10 add esp, 10
004019FF . FF75 EC push dword ptr [ebp-14]
00401A02 . 8D95 B8FEFFFF lea edx, dword ptr [ebp-148]
00401A08 . 52 push edx
00401A09 . E8 16E60700 call 00480024
00401A0E . 83C4 08 add esp, 8
00401A11 . 8B4D D0 mov ecx, dword ptr [ebp-30]
00401A14 . F7D1 not ecx
00401A16 . 890D 40836700 mov dword ptr [678340], ecx
00401A1C . 8A85 B8FEFFFF mov al, byte ptr [ebp-148]
00401A22 . 8A15 38046400 mov dl, byte ptr [640438]
00401A28 . 3AC2 cmp al, dl
00401A2A . 75 48 jnz short 00401A74
00401A2C . FF05 40836700 inc dword ptr [678340]
00401A32 . 8A8D B9FEFFFF mov cl, byte ptr [ebp-147]
00401A38 . A0 39046400 mov al, byte ptr [640439]
00401A3D . 3AC8 cmp cl, al
00401A3F . 75 06 jnz short 00401A47
00401A41 . FF05 40836700 inc dword ptr [678340]
00401A47 > 0FBE95 C0FEFF>movsx edx, byte ptr [ebp-140]
00401A4E . 83FA 35 cmp edx, 35
00401A51 . 75 06 jnz short 00401A59
00401A53 . FF05 40836700 inc dword ptr [678340]
00401A59 > 0FBE8D C1FEFF>movsx ecx, byte ptr [ebp-13F]
00401A60 . 83F9 33 cmp ecx, 33
00401A63 . 0F85 D1010000 jnz 00401C3A
00401A69 . FF05 40836700 inc dword ptr [678340]
00401A6F . E9 C6010000 jmp 00401C3A
00401A74 > 8A85 B8FEFFFF mov al, byte ptr [ebp-148]
00401A7A . 8A15 3A046400 mov dl, byte ptr [64043A]
00401A80 . 3AC2 cmp al, dl
00401A82 . 74 13 je short 00401A97
00401A84 . 8A8D B9FEFFFF mov cl, byte ptr [ebp-147]
00401A8A . A0 3B046400 mov al, byte ptr [64043B]
00401A8F . 3AC8 cmp cl, al
00401A91 . 0F85 8E000000 jnz 00401B25
00401A97 > FF05 40836700 inc dword ptr [678340]
00401A9D . FF05 40836700 inc dword ptr [678340]
00401AA3 . 0FBE95 C0FEFF>movsx edx, byte ptr [ebp-140]
00401AAA . 83FA 61 cmp edx, 61
00401AAD . 7C 12 jl short 00401AC1
00401AAF . 0FBE8D C0FEFF>movsx ecx, byte ptr [ebp-140]
00401AB6 . 83C1 A9 add ecx, -57
00401AB9 . 890D 94276500 mov dword ptr [652794], ecx
00401ABF . EB 0F jmp short 00401AD0
00401AC1 > 0FBE85 C0FEFF>movsx eax, byte ptr [ebp-140]
00401AC8 . 83C0 D0 add eax, -30
00401ACB . A3 94276500 mov dword ptr [652794], eax
00401AD0 > FF05 40836700 inc dword ptr [678340]
00401AD6 . 8B15 94276500 mov edx, dword ptr [652794]
00401ADC . C1E2 04 shl edx, 4
00401ADF . 8915 94276500 mov dword ptr [652794], edx
00401AE5 . 0FBE8D C1FEFF>movsx ecx, byte ptr [ebp-13F]
00401AEC . 83F9 61 cmp ecx, 61
00401AEF . 7C 12 jl short 00401B03
00401AF1 . 0FBE85 C1FEFF>movsx eax, byte ptr [ebp-13F]
00401AF8 . 83C0 A9 add eax, -57
00401AFB . 0105 94276500 add dword ptr [652794], eax
00401B01 . EB 10 jmp short 00401B13
00401B03 > 0FBE95 C1FEFF>movsx edx, byte ptr [ebp-13F]
00401B0A . 83C2 D0 add edx, -30
00401B0D . 0115 94276500 add dword ptr [652794], edx
00401B13 > FF05 40836700 inc dword ptr [678340]
00401B19 . 832D 94276500>sub dword ptr [652794], 20
00401B20 . E9 15010000 jmp 00401C3A
00401B25 > 8A8D B8FEFFFF mov cl, byte ptr [ebp-148]
00401B2B . A0 3C046400 mov al, byte ptr [64043C]
00401B30 . 3AC8 cmp cl, al
00401B32 . 74 14 je short 00401B48
00401B34 . 8A95 B9FEFFFF mov dl, byte ptr [ebp-147]
00401B3A . 8A0D 3D046400 mov cl, byte ptr [64043D]
00401B40 . 3AD1 cmp dl, cl
00401B42 . 0F85 F2000000 jnz 00401C3A
00401B48 > FF05 40836700 inc dword ptr [678340]
00401B4E . FF05 40836700 inc dword ptr [678340]
00401B54 . 0FBE85 C6FEFF>movsx eax, byte ptr [ebp-13A]
00401B5B . 83F8 61 cmp eax, 61
00401B5E . 7C 0F jl short 00401B6F
00401B60 . 0FBE95 C6FEFF>movsx edx, byte ptr [ebp-13A]
00401B67 . 83C2 A9 add edx, -57
00401B6A . 8955 CC mov dword ptr [ebp-34], edx
00401B6D . EB 0D jmp short 00401B7C
00401B6F > 0FBE8D C6FEFF>movsx ecx, byte ptr [ebp-13A]
00401B76 . 83C1 D0 add ecx, -30
00401B79 . 894D CC mov dword ptr [ebp-34], ecx
00401B7C > 8B45 CC mov eax, dword ptr [ebp-34]
00401B7F . C1E0 04 shl eax, 4
00401B82 . 8945 CC mov dword ptr [ebp-34], eax
00401B85 . 0FBE95 C7FEFF>movsx edx, byte ptr [ebp-139]
00401B8C . 83FA 61 cmp edx, 61
00401B8F . 7C 0F jl short 00401BA0
00401B91 . 0FBE8D C7FEFF>movsx ecx, byte ptr [ebp-139]
00401B98 . 83C1 A9 add ecx, -57
00401B9B . 014D CC add dword ptr [ebp-34], ecx
00401B9E . EB 0D jmp short 00401BAD
00401BA0 > 0FBE85 C7FEFF>movsx eax, byte ptr [ebp-139]
00401BA7 . 83C0 D0 add eax, -30
00401BAA . 0145 CC add dword ptr [ebp-34], eax
00401BAD > 836D CC 20 sub dword ptr [ebp-34], 20
00401BB1 . 0FBE95 C0FEFF>movsx edx, byte ptr [ebp-140]
00401BB8 . 83FA 61 cmp edx, 61
00401BBB . 7C 12 jl short 00401BCF
00401BBD . 0FBE8D C0FEFF>movsx ecx, byte ptr [ebp-140]
00401BC4 . 83C1 A9 add ecx, -57
00401BC7 . 890D 94276500 mov dword ptr [652794], ecx
00401BCD . EB 0F jmp short 00401BDE
00401BCF > 0FBE85 C0FEFF>movsx eax, byte ptr [ebp-140]
00401BD6 . 83C0 D0 add eax, -30
00401BD9 . A3 94276500 mov dword ptr [652794], eax
00401BDE > FF05 40836700 inc dword ptr [678340]
00401BE4 . 8B15 94276500 mov edx, dword ptr [652794]
00401BEA . C1E2 04 shl edx, 4
00401BED . 8915 94276500 mov dword ptr [652794], edx
00401BF3 . 0FBE8D C1FEFF>movsx ecx, byte ptr [ebp-13F]
00401BFA . 83F9 61 cmp ecx, 61
00401BFD . 7C 12 jl short 00401C11
00401BFF . 0FBE85 C1FEFF>movsx eax, byte ptr [ebp-13F]
00401C06 . 83C0 A9 add eax, -57
00401C09 . 0105 94276500 add dword ptr [652794], eax
00401C0F . EB 10 jmp short 00401C21
00401C11 > 0FBE95 C1FEFF>movsx edx, byte ptr [ebp-13F]
00401C18 . 83C2 D0 add edx, -30
00401C1B . 0115 94276500 add dword ptr [652794], edx
00401C21 > FF05 40836700 inc dword ptr [678340]
00401C27 . 832D 94276500>sub dword ptr [652794], 20
00401C2E . 8B4D CC mov ecx, dword ptr [ebp-34]
00401C31 . C1E1 06 shl ecx, 6
00401C34 . 010D 94276500 add dword ptr [652794], ecx
00401C3A > 0FBE85 BEFEFF>movsx eax, byte ptr [ebp-142]
00401C41 . 83F8 32 cmp eax, 32
00401C44 . 7C 0C jl short 00401C52
00401C46 . 0FBE95 BEFEFF>movsx edx, byte ptr [ebp-142]
00401C4D . 83FA 32 cmp edx, 32
00401C50 . 7E 06 jle short 00401C58
00401C52 > FF0D 40836700 dec dword ptr [678340]
00401C58 > 0FBE8D BFFEFF>movsx ecx, byte ptr [ebp-141]
00401C5F . 83F9 61 cmp ecx, 61
00401C62 . 74 12 je short 00401C76
00401C64 . 0FBE85 BFFEFF>movsx eax, byte ptr [ebp-141]
00401C6B . 83F8 63 cmp eax, 63
00401C6E . 74 06 je short 00401C76
00401C70 . FF0D 40836700 dec dword ptr [678340]
00401C76 > FF05 40836700 inc dword ptr [678340]
00401C7C . FF05 40836700 inc dword ptr [678340]
00401C82 . C745 C4 DC650>mov dword ptr [ebp-3C], 65DC
00401C89 . 8B15 40836700 mov edx, dword ptr [678340]
00401C8F . 8955 B8 mov dword ptr [ebp-48], edx
00401C92 . FF0D 40836700 dec dword ptr [678340]
00401C98 . 8B4D B8 mov ecx, dword ptr [ebp-48]
00401C9B . A1 40836700 mov eax, dword ptr [678340]
00401CA0 . 3BC8 cmp ecx, eax
00401CA2 . 8B55 D0 mov edx, dword ptr [ebp-30]
00401CA5 . F7D2 not edx
00401CA7 . 83C2 0A add edx, 0A
00401CAA . 8B0D 40836700 mov ecx, dword ptr [678340]
00401CB0 . 3BD1 cmp edx, ecx
00401CB2 . 7C 10 jl short 00401CC4
00401CB4 . 8B45 D0 mov eax, dword ptr [ebp-30]
00401CB7 . F7D0 not eax
00401CB9 . 83C0 F6 add eax, -0A
00401CBC . 8B15 40836700 mov edx, dword ptr [678340]
00401CC2 . 3BC2 cmp eax, edx
00401CC4 > C745 C0 C8806>mov dword ptr [ebp-40], 006380C8
00401CCB . 8D8D 38FBFFFF lea ecx, dword ptr [ebp-4C8]
00401CD1 . 51 push ecx
00401CD2 . E8 397C0A00 call 004A9910
00401CD7 . 59 pop ecx
00401CD8 . FF0D 40836700 dec dword ptr [678340]
00401CDE . FF75 C4 push dword ptr [ebp-3C]
00401CE1 . FF75 C0 push dword ptr [ebp-40]
00401CE4 . 8D85 38FBFFFF lea eax, dword ptr [ebp-4C8]
00401CEA . 50 push eax
00401CEB . E8 5C7C0A00 call 004A994C
00401CF0 . 83C4 0C add esp, 0C
00401CF3 . FF0D 40836700 dec dword ptr [678340]
00401CF9 . 8D95 38FBFFFF lea edx, dword ptr [ebp-4C8]
00401CFF . 52 push edx
00401D00 . 8D8D 90FBFFFF lea ecx, dword ptr [ebp-470]
00401D06 . 51 push ecx
00401D07 . E8 287D0A00 call 004A9A34
00401D0C . 83C4 08 add esp, 8
00401D0F . 6A 10 push 10
00401D11 . 68 A4E66300 push 0063E6A4
00401D16 . 8D85 90FBFFFF lea eax, dword ptr [ebp-470]
00401D1C . 50 push eax
00401D1D . E8 823E2200 call 00625BA4
00401D22 . 83C4 0C add esp, 0C
00401D25 . 85C0 test eax, eax
00401D27 . 0F85 FD000000 jnz 00401E2A
00401D2D . FF75 0C push dword ptr [ebp+C]
00401D30 . FF75 08 push dword ptr [ebp+8]
00401D33 . 68 6F046400 push 0064046F ; ASCII "UTRISO"
00401D38 . 68 68046400 push 00640468 ; ASCII "%s%s%s"
00401D3D . 8D95 A0FBFFFF lea edx, dword ptr [ebp-460]
00401D43 . 52 push edx
00401D44 . E8 CB7F2200 call 00629D14
00401D49 . 83C4 14 add esp, 14
00401D4C . FF0D 40836700 dec dword ptr [678340]
00401D52 . 8D8D A0FBFFFF lea ecx, dword ptr [ebp-460]
00401D58 . 51 push ecx
00401D59 . 8D85 90FBFFFF lea eax, dword ptr [ebp-470]
00401D5F . 50 push eax
00401D60 . E8 3FFBFFFF call 004018A4
00401D65 . 83C4 08 add esp, 8
00401D68 . 33D2 xor edx, edx
00401D6A . 8955 C8 mov dword ptr [ebp-38], edx
00401D6D . C745 DC F9100>mov dword ptr [ebp-24], 10F9
00401D74 . 8B4D C8 mov ecx, dword ptr [ebp-38]
00401D77 . 8B45 DC mov eax, dword ptr [ebp-24]
00401D7A . 3BC8 cmp ecx, eax
00401D7C . 0F8F A8000000 jg 00401E2A
00401D82 > 8B55 C8 mov edx, dword ptr [ebp-38]
00401D85 . 8B4D DC mov ecx, dword ptr [ebp-24]
00401D88 . 03D1 add edx, ecx
00401D8A . D1FA sar edx, 1
00401D8C . 79 03 jns short 00401D91
00401D8E . 83D2 00 adc edx, 0
00401D91 > 8955 D8 mov dword ptr [ebp-28], edx
00401D94 . 6A 06 push 6
00401D96 . 8D85 90FBFFFF lea eax, dword ptr [ebp-470]
00401D9C . 50 push eax
00401D9D . 8B55 D8 mov edx, dword ptr [ebp-28]
00401DA0 . 03D2 add edx, edx
00401DA2 . 8D1452 lea edx, dword ptr [edx+edx*2]
00401DA5 . 8B4D C0 mov ecx, dword ptr [ebp-40]
00401DA8 . 03D1 add edx, ecx
00401DAA . 52 push edx
00401DAB . E8 F43D2200 call 00625BA4
00401DB0 . 83C4 0C add esp, 0C
00401DB3 . 8945 BC mov dword ptr [ebp-44], eax
00401DB6 . 8B45 BC mov eax, dword ptr [ebp-44]
00401DB9 . 85C0 test eax, eax
00401DBB . 7E 09 jle short 00401DC6
00401DBD . 8B55 D8 mov edx, dword ptr [ebp-28]
00401DC0 . 4A dec edx
00401DC1 . 8955 DC mov dword ptr [ebp-24], edx
00401DC4 . EB 56 jmp short 00401E1C
00401DC6 > 8B4D BC mov ecx, dword ptr [ebp-44]
00401DC9 . 85C9 test ecx, ecx
这里可以改成xor ecx, ecx,好让下面可以跳转。
00401DCB . 7D 09 jge short 00401DD6
这里一定要跳转才会经过下面的00401DFA处。也可以直接改成JMP
00401DCD . 8B45 D8 mov eax, dword ptr [ebp-28]
00401DD0 . 40 inc eax
00401DD1 . 8945 C8 mov dword ptr [ebp-38], eax
00401DD4 . EB 46 jmp short 00401E1C
00401DD6 > FF0D 40836700 dec dword ptr [678340]
00401DDC . FF0D 40836700 dec dword ptr [678340]
00401DE2 . 8B55 D0 mov edx, dword ptr [ebp-30]
00401DE5 . 83C2 46 add edx, 46
00401DE8 . 8915 B4E66300 mov dword ptr [63E6B4], edx
00401DEE . 8B4D D0 mov ecx, dword ptr [ebp-30]
00401DF1 . F7D1 not ecx
00401DF3 . A1 40836700 mov eax, dword ptr [678340]
00401DF8 . 3BC8 cmp ecx, eax
这里可以改成xor eax, eax,好让下面不要跳转,跳转就完了。
00401DFA . 75 2E jnz short 00401E2A
当然也可以nop掉上面这句。
00401DFC . 8B15 C0806300 mov edx, dword ptr [6380C0]
00401E02 . 8915 40836700 mov dword ptr [678340], edx
00401E08 . 8B0D C0806300 mov ecx, dword ptr [6380C0]
经过分析,程序只要运行到这里就可以令两个地址的值一样。
上面这几行代码是将[6380C0]的值分别传给EDX和ECX,并且通过EDX传给[678340],一句话,运行了上面
,[6380C0]、[678340]、EDX、ECX的值就都一样了。
00401E0E . 81C1 22060000 add ecx, 622
00401E14 . 890D 6C646400 mov dword ptr [64646C], ecx
00401E1A . EB 0E jmp short 00401E2A
00401E1C > 8B45 C8 mov eax, dword ptr [ebp-38]
00401E1F . 8B55 DC mov edx, dword ptr [ebp-24]
00401E22 . 3BC2 cmp eax, edx
00401E24 .^ 0F8E 58FFFFFF jle 00401D82
00401E2A > 8D4D F0 lea ecx, dword ptr [ebp-10]
00401E2D . 51 push ecx
00401E2E . FF75 08 push dword ptr [ebp+8]
00401E31 . E8 BAE00700 call 0047FEF0
00401E36 . 83C4 08 add esp, 8
00401E39 . 8B45 D0 mov eax, dword ptr [ebp-30]
00401E3C . 83C0 46 add eax, 46
00401E3F . 8B15 B4E66300 mov edx, dword ptr [63E6B4]
00401E45 . 3BC2 cmp eax, edx
00401E47 . 74 0B je short 00401E54
00401E49 . 8B4D D0 mov ecx, dword ptr [ebp-30]
00401E4C . F7D1 not ecx
00401E4E . 890D 40836700 mov dword ptr [678340], ecx
00401E54 > FF75 EC push dword ptr [ebp-14]
00401E57 . FF75 F0 push dword ptr [ebp-10]
00401E5A . E8 EDA80700 call 0047C74C
00401E5F . 83C4 08 add esp, 8
00401E62 . 85C0 test eax, eax
00401E64 . 74 04 je short 00401E6A
00401E66 . 33C0 xor eax, eax
00401E68 . EB 05 jmp short 00401E6F
00401E6A > B8 01000000 mov eax, 1
00401E6F > 8BE5 mov esp, ebp
00401E71 . 5D pop ebp
00401E72 . C3 retn
总共改了三处:
00471479 0F85 C4000000 jnz 00471542
处改成
00471479 0F85 B9000000 jnz 00471538
00401DC9 . 85C9 test ecx, ecx
改成
00401DC9 . 33C9 xor ecx, ecx
00401DF8 . 3BC8 cmp ecx, eax
改成
00401DF8 . 33C0 xor eax, eax
修改保存后成功运行,没有注册窗口和试用字样,小功告成。
等等,试下300M的限制去除了没有?随便找个600M的ISO文件打开,另存为,晕,革命尙未成功。
回头看看,判断注册的标志,有两个,一个是[6452D8]的赋值, 一个是[678340]和[6380C0]的赋值,其它
地方一定还有关于它们的赋值及判断。[6452D8]处的命令简单了点,搜索起来肯定很多,很难判断,我们
再回头看看下面这个关键语句,是用来平衡[678340]和[6380C0]的数值的:
00401DFC . 8B15 C0806300 mov edx, dword ptr [6380C0]
00401E02 . 8915 40836700 mov dword ptr [678340], edx
00401E08 . 8B0D C0806300 mov ecx, dword ptr [6380C0]
OD重新载入后,ctrl+f,查找命令,mov edx, dword ptr [6380C0]或另外两句,ctrl+l继续查找,
找到几处,点击进去一看,
00443E15 |. 85C9 |test ecx, ecx
这里。。。
00443E17 |. 7D 09 |jge short 00443E22
00443E19 |. 8B45 D8 |mov eax, dword ptr [ebp-28]
00443E1C |. 40 |inc eax
00443E1D |. 8945 C8 |mov dword ptr [ebp-38], eax
00443E20 |. EB 46 |jmp short 00443E68
00443E22 |> FF0D 40836700 |dec dword ptr [678340]
00443E28 |. FF0D 40836700 |dec dword ptr [678340]
00443E2E |. 8B55 D0 |mov edx, dword ptr [ebp-30]
00443E31 |. 83C2 46 |add edx, 46
00443E34 |. 8915 00976500 |mov dword ptr [659700], edx
00443E3A |. 8B4D D0 |mov ecx, dword ptr [ebp-30]
00443E3D |. F7D1 |not ecx
00443E3F |. A1 40836700 |mov eax, dword ptr [678340]
00443E44 |. 3BC8 |cmp ecx, eax
这里。。。
00443E46 |. 75 2E |jnz short 00443E76
00443E48 |. 8B15 C0806300 |mov edx, dword ptr [6380C0]
00443E4E |. 8915 40836700 |mov dword ptr [678340], edx
00443E54 |. 8B0D C0806300 |mov ecx, dword ptr [6380C0]
这里是不是很眼熟?还等什么,照改吧。
继续ctrl+l,又找到一处:
004AC7EE |. 85C9 |test ecx, ecx
004AC7F0 |. 7D 09 |jge short 004AC7FB
这里。。。
004AC7F2 |. 8B45 D8 |mov eax, dword ptr [ebp-28]
004AC7F5 |. 40 |inc eax
004AC7F6 |. 8945 C8 |mov dword ptr [ebp-38], eax
004AC7F9 |. EB 46 |jmp short 004AC841
004AC7FB |> FF0D 40836700 |dec dword ptr [678340]
004AC801 |. FF0D 40836700 |dec dword ptr [678340]
004AC807 |. 8B55 D0 |mov edx, dword ptr [ebp-30]
004AC80A |. 83C2 46 |add edx, 46
004AC80D |. 8915 B86D6700 |mov dword ptr [676DB8], edx
004AC813 |. 8B4D D0 |mov ecx, dword ptr [ebp-30]
004AC816 |. F7D1 |not ecx
004AC818 |. A1 40836700 |mov eax, dword ptr [678340]
004AC81D |. 3BC8 |cmp ecx, eax
这里。。。
004AC81F |. 75 2E |jnz short 004AC84F
004AC821 |. 8B15 C0806300 |mov edx, dword ptr [6380C0]
004AC827 |. 8915 40836700 |mov dword ptr [678340], edx
004AC82D |. 8B0D C0806300 |mov ecx, dword ptr [6380C0]
降龙十八掌,打完收工!
这样还不行?想加上自己的签名忽悠人?在ultraiso目录里新建文本,里面按以下格式填写。
UserName="大道至简"
Registration="7878-7878-1170-9394"
再把文本重命名为uikey.ini保存,运行ultraiso即可在关于里见到自己的名字授权。想改成多用户版本
的的话,再用OD载入,查找字串"License",点击进去就可以看到(ASCII "%d User License")和(ASCII
"Single User License"),怎样修改上面的跳转不用我教了吧!
唉,写个破文都要个把小时,今天才知道,码字原来是个体力活,比破解还累!
[注意]APP应用上架合规检测服务,协助应用顺利上架!