<一> 摘要 software : file name juggler 1.21 home page : http://www.winpreton.com file name : juggler121bt.zip reg_name : yupie s/n : 1998 password : 4831-E58-AAC5 <二> 缘起 一个能让你一次将一堆档案重新改名的程式,奇怪的是整个程式只有80K,比起其他相同功 能的程式小得很多,蛮不错的软体. <叁> 执行情形 (1) 载入soft-ice後执行name juggler,进入程式後选择register,在user name填入yupie,S/N填入1998,password填入12345678,Ctrl-d进入soft-ice後下bpx getwindowtexta指令,按F5重回到注册画面,按下确定soft-ice,马上进入soft-ice. (2) bd *,按F11. (3) 0137:00406E92 CALL CS:[USER32!GetDlgItem] 0137:00406E99 PUSH EAX 0137:00406E9A CALL CS:[USER32!GetWindowTextA] 0137:00406EA1 PUSH 10 0137:00406EA3 MOV EAX,0040F560 ;1998放入EAX 0137:00406EA8 PUSH EAX 0137:00406EA9 PUSH 00000322 0137:00406EAE MOV EAX,[EBP-04] 0137:00406EB1 PUSH EAX 0137:00406EB2 CALL CS:[USER32!GetDlgItem] 0137:00406EB9 PUSH EAX 0137:00406EBA CALL CS:[USER32!GetWindowTextA] 0137:00406EC1 PUSH 0F 0137:00406EC3 MOV EAX,0040F570 ;12345678放入EAX 0137:00406EC8 PUSH EAX 0137:00406EC9 PUSH 00000323 0137:00406ECE MOV EAX,[EBP-04] 0137:00406ED1 PUSH EAX 0137:00406ED2 CALL CS:[USER32!GetDlgItem] 0137:00406ED9 PUSH EAX 0137:00406EDA CALL CS:[USER32!GetWindowTextA] 0137:00406EE1 MOV EBX,0040F570 ;12345678,1998, 0137:00406EE6 MOV EDX,0040F560 ;yupie分别放入 0137:00406EEB MOV EAX,0040F530 ;EBX,EDX,EAX 0137:00406EF0 CALL 00407258 ; 0137:00406EF5 TEST EAX,EAX ; 0137:00406EF7 JZ 00406F65 ;若比对失败则jump 你可以在0137:00406EF7处下"rfl -z"使其不做跳跃,回到程式就出现注册成功的.到这里 可以很明显的知道0137:00406EF0是比对关键点,所以按F8切入. 0137:00407258 PUSH ECX 0137:00407259 PUSH ESI 0137:0040725A PUSH EDI 0137:0040725B PUSH EBP 0137:0040725C MOV EBP,ESP 0137:0040725E SUB ESP,00000024 0137:00407264 MOV [EBP-0C],EAX 0137:00407267 MOV [EBP-08],EDX 0137:0040726A MOV [EBP-04],EBX 0137:0040726D LEA EBX,[EBP-20] 0137:00407270 MOV EDX,[EBP-08] 0137:00407273 MOV EAX,[EBP-0C] 0137:00407276 CALL 00407094 ;计算password 0137:0040727B LEA EDX,[EBP-20] ;EBP-20 => 4831-E58-AAC5 0137:0040727E MOV EAX,[EBP-04] ;[EBP-04] => 12345678 0137:00407281 CALL 00407C57 ;比对password 0137:00407286 TEST EAX,EAX ; 0137:00407288 JNZ 00407293 ; 在0137:00407288处下"rfl +z"使其不做跳跃,重新回到程式中出现注册成功的画面,所以 可以知道程式应该是用user name与S/N来计算出password,而计算出password的副程式在 0137:00407276. <四> 结论 有关注册码计算的部分刚刚我瞧了一下下有点复杂让,我偷个懒先睡一觉,明天再来研究一 下吧?