UltraISO软碟通是一款光盘映像ISO文件编辑制作工具,它可以图形化地从光盘、硬盘制作和编辑ISO文件。UltraISO可以做到:1.从CD-ROM制作光盘的映像文件。2.将硬盘、光盘、网络磁盘文件制作成ISO文件。3.从ISO文件中提取文件或文件夹。4.编辑各种ISO文件(如Nero Burning ROM、Easy CD Creator、Clone CD 制作的光盘映像文件)。 5.制作可启动ISO文件。+)新ISO文件处理内核,更稳定、高效 +)超强还原功能,可以准确还原被编辑文件,确保ISO文件不被损坏 +)可制作1.2M/1.44M/2.88M软盘仿真启动光盘 +)完整的帮助文件(CHM格式) +)实现重新打开文件列表功能 +)支持Windows 2000下制作光盘映像文件 *)修正刻盘后有时出现目录不能打开错误。
第一次在论坛发帖子!!
在论坛转悠了大半年的,还是个新人,希望这次看雪大大能给一个邀请码!
软件下载地址:http://www.crsky.com/soft/1134.html
用PEID查壳:ASPack 2.12 -> Alexey Solodovnikov,很简单的一个壳,我就不多说了!
安装之后载入OD
00C0E001 > 60 pushad
00C0E002 E8 03000000 call UltraISO.00C0E00A
00C0E007 - E9 EB045D45 jmp 461DE4F7
00C0E00C 55 push ebp
00C0E00D C3 retn
00C0E00E E8 01000000 call UltraISO.00C0E014
00C0E013 EB 5D jmp short UltraISO.00C0E072
脱壳之后
00401620 > $ /EB 10 jmp short dumped.00401632
00401622 . |66:623A bound di,dword ptr ds:[edx]
00401625 . |43 inc ebx
00401626 . |2B2B sub ebp,dword ptr ds:[ebx]
00401628 . |48 dec eax
00401629 . |4F dec edi
0040162A . |4F dec edi
0040162B . |4B dec ebx
0040162C . |90 nop
0040162D .-|E9 98006400 jmp dumped.00A416CA
00401632 > \A1 8B006400 mov eax,dword ptr ds:[64008B]
00401637 . C1E0 02 shl eax,2
0040163A . A3 8F006400 mov dword ptr ds:[64008F],eax
0040163F . 52 push edx
00401640 . 6A 00 push 0 ; /pModule = NULL
00401642 . E8 5BD02300 call <jmp.&kernel32.GetModuleHandleA> ; \GetModuleHandleA
输入用户名和注册码,并且注册码要是16!
点击确定,注册码已经录入,请重新运行程序,不用多说,软件是重启验证的!
既然是重启验证,那么它根本会打软件保存在电脑里面,要么是文件,要么是注册表!这款软件保存在注册表里面!用这个款(Regshot_2.0.1.66)软件监控一个注册表,看它都做了些什么
就是我们的用户名,存放的注册码,看起来很像MD5
打开系统注册表,运行中输入“regedit"查找“1234567890123456”是查找不到,因为我们输入的假码通过一系列运算已经成"f5ace2b8a891ffd9fcaee0beae93fdd6"UserName里面是用户名,Registration是注册码,在这里UserName是关键,下面我们要用到。
BC++和DELPHI都可以用,那咱们就用DEDE载入脱壳后的文件!点过程,里面有一个TfrmRegister,点击它,出现如图所示
00481EC0 这个地址就是我要查找的按钮事件
既然是注册表重启验证的,那我们就下 bp RegQueryValueExA断点 F9几次之后
0012F6C4 00472CCC /CALL 到 RegQueryValueExA 来自 dumped.00472CC7
0012F6C8 000000CC |hKey = CC
0012F6CC 0066E5B6 |ValueName = "UserName"
0012F6D0 00000000 |Reserved = NULL
0012F6D4 0012FAF0 |pValueType = 0012FAF0
0012F6D8 0012F7E4 |Buffer = 0012F7E4
0012F6DC 0012FAEC \pBufSize = 0012FAEC
0012F6E0 505C3A43
此时正是返回程序领空的最佳时机,Alt+F9返回程序领空。
00472CCC |. 85C0 test eax,eax
接下来F8单步一直向下
00472F34 |. 68 94C48200 push dumped.0082C494 ; ASCII "hello"
00472F39 |. E8 BEA31B00 call dumped.0062D2FC
00472F3E |. 83C4 08 add esp,8
00472F41 |. FF75 0C push dword ptr ss:[ebp+C]
00472F44 |. 68 98C58200 push dumped.0082C598 ; ASCII "1234567890123456"
00472F49 |. E8 AEA31B00 call dumped.0062D2FC
00472F4E |. 83C4 08 add esp,8
00472F51 |. B8 01000000 mov eax,1
00472F56 |> 8BE5 mov esp,ebp
00472F58 |. 5D pop ebp
00472F59 \. C3 retn
F2在00472F59下断,SHIFT+F9运行,F8单步继续。
00403344 . /74 0D je short dumped.00403353
00403346 . |FF35 54E46700 push dword ptr ds:[67E454] ; /ExitCode = FFFFFFFF
0040334C . |E8 5BB22300 call <jmp.&kernel32.ExitProcess> ; \ExitProcess
00403351 . |EB 07 jmp short dumped.0040335A
00403353 > \33C0 xor eax,eax
这里要跳转,不然程序就OVER了!
00403362 . E8 75C01E00 call dumped.005EF3DC ; 激活注册对话框
00403027 8B0D 94B76800 mov ecx,dword ptr ds:[68B794] ;
0040302D A1 C0006400 mov eax,dword ptr ds:[6400C0] ;这两个数值有点奇怪,我们后面完美破解所需要的
00403032 3BC8 cmp ecx,eax
00403034 74 19 je short dumped.0040304F ; 关键跳转
00403036 8B15 08BC6C00 mov edx,dword ptr ds:[6CBC08] ; dumped.00B4ACE8
; 关键跳转,上面的几个函数读取了我们的用户名和假码,通过某种判断,如果注册成功就跳,但是没有跳,所以我要让它跳转
关键点一:
00401DAB |. E8 A8B62200 |call dumped.0062D458
00401DB0 |. 83C4 0C |add esp,0C
00401DB3 |. 8945 BC |mov dword ptr ss:[ebp-44],eax
00401DB6 |. 8B45 BC |mov eax,dword ptr ss:[ebp-44]
00401DB9 |. 85C0 |test eax,eax
00401DBB 7E 09 jle short dumped.00401DC6 ; 这里要跳转
00401DBD |. 8B55 D8 |mov edx,dword ptr ss:[ebp-28]
00401DC0 |. 4A |dec edx
关键点二:
00401DF3 |. A1 94B76800 |mov eax,dword ptr ds:[68B794]
00401DF8 |. 3BC8 |cmp ecx,eax
00401DFA 75 2E jnz short dumped.00401E2A ; 这里是一个关键CALL,不能跳
mov edx.dword ptr ds:[6400C0]
mov dword ptr ds:[68B794],edx
cmp ecx,eax
jnz xxxx
不等于时转移. 所以我们要让这个两个里面的内容相等,这里是用来限制ISO软件的大小,
1.
00401DBB |. /7E 09 |jle short dumped.00401DC6 ; 这里要跳转,修改为JMP
00401DBD |. |8B55 D8 |mov edx,dword ptr ss:[ebp-28]
00401DC0 |. |4A |dec edx
00401DC1 |. |8955 DC |mov dword ptr ss:[ebp-24],edx
00401DC4 |. |EB 56 |jmp short dumped.00401E1C
00401DC6 |> \8B4D BC |mov ecx,dword ptr ss:[ebp-44]
00401DC9 |. 85C9 |test ecx,ecx
00401DCB |. 7D 09 |jge short dumped.00401DD6
00401DCD |. 8B45 D8 |mov eax,dword ptr ss:[ebp-28]
00401DD0 |. 40 |inc eax
00401DD1 |. 8945 C8 |mov dword ptr ss:[ebp-38],eax
00401DD4 |. EB 46 |jmp short dumped.00401E1C
00401DD6 |> FF0D 94B76800 |dec dword ptr ds:[68B794]
00401DDC |. FF0D 94B76800 |dec dword ptr ds:[68B794]
00401DE2 |. 8B55 D0 |mov edx,dword ptr ss:[ebp-30]
00401DE5 |. 83C2 46 |add edx,46
00401DE8 |. 8915 489F6400 |mov dword ptr ds:[649F48],edx
00401DEE |. 8B4D D0 |mov ecx,dword ptr ss:[ebp-30]
00401DF1 |. F7D1 |not ecx
00401DF3 |. A1 94B76800 |mov eax,dword ptr ds:[68B794]
00401DF8 |. 3BC8 |cmp ecx,eax
00401DFA 74 2E je short dumped.00401E2A ; 修改为JE
00401DFC |. 8B15 C0006400 |mov edx,dword ptr ds:[6400C0]
00401E02 |. 8915 94B76800 |mov dword ptr ds:[68B794],edx
2.
004453B7 . /7E 09 jle short dumped.004453C2 ; 修改为JMP
004453B9 . |8B55 D8 mov edx,dword ptr ss:[ebp-28]
004453BC . |4A dec edx
004453BD . |8955 DC mov dword ptr ss:[ebp-24],edx
004453C0 . |EB 56 jmp short dumped.00445418
004453C2 > \8B4D BC mov ecx,dword ptr ss:[ebp-44]
004453C5 . 85C9 test ecx,ecx
004453C7 . 7D 09 jge short dumped.004453D2
004453C9 . 8B45 D8 mov eax,dword ptr ss:[ebp-28]
004453CC . 40 inc eax
004453CD . 8945 C8 mov dword ptr ss:[ebp-38],eax
004453D0 . EB 46 jmp short dumped.00445418
004453D2 > FF0D 94B76800 dec dword ptr ds:[68B794]
004453D8 . FF0D 94B76800 dec dword ptr ds:[68B794]
004453DE . 8B55 D0 mov edx,dword ptr ss:[ebp-30]
004453E1 . 83C2 46 add edx,46
004453E4 . 8915 248E6600 mov dword ptr ds:[668E24],edx
004453EA . 8B4D D0 mov ecx,dword ptr ss:[ebp-30]
004453ED . F7D1 not ecx
004453EF . A1 94B76800 mov eax,dword ptr ds:[68B794]
004453F4 . 3BC8 cmp ecx,eax
004453F6 . 75 2E jnz short dumped.00445426 ; 修改为JZ
004453F8 . 8B15 C0006400 mov edx,dword ptr ds:[6400C0]
004453FE . 8915 94B76800 mov dword ptr ds:[68B794],edx
3.
004AEEE8 /7E 09 jle short dumped.004AEEF3 ; 修改为JMP
004AEEEA . |8B55 D8 mov edx,dword ptr ss:[ebp-28]
004AEEED . |4A dec edx
004AEEEE . |8955 DC mov dword ptr ss:[ebp-24],edx
004AEEF1 . |EB 56 jmp short dumped.004AEF49
004AEEF3 > \8B4D BC mov ecx,dword ptr ss:[ebp-44]
004AEEF6 . 85C9 test ecx,ecx
004AEEF8 . 7D 09 jge short dumped.004AEF03
004AEEFA . 8B45 D8 mov eax,dword ptr ss:[ebp-28]
004AEEFD . 40 inc eax
004AEEFE . 8945 C8 mov dword ptr ss:[ebp-38],eax
004AEF01 . EB 46 jmp short dumped.004AEF49
004AEF03 > FF0D 94B76800 dec dword ptr ds:[68B794]
004AEF09 . FF0D 94B76800 dec dword ptr ds:[68B794]
004AEF0F . 8B55 D0 mov edx,dword ptr ss:[ebp-30]
004AEF12 . 83C2 46 add edx,46
004AEF15 . 8915 ECA16800 mov dword ptr ds:[68A1EC],edx
004AEF1B . 8B4D D0 mov ecx,dword ptr ss:[ebp-30]
004AEF1E . F7D1 not ecx
004AEF20 . A1 94B76800 mov eax,dword ptr ds:[68B794]
004AEF25 . 3BC8 cmp ecx,eax
004AEF27 . 75 2E jnz short dumped.004AEF57 ; 修改为jz
此时已经算是完美破解了。第一次发帖子,版面排的很乱!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)