• 标 题:我破了一个小软件,但它还是存在一些问题,想请高手帮忙分析一下?请进!!! (4千字)
  • 作 者:1212
  • 时 间:2001-1-7 18:43:22
  • 链 接:http://bbs.pediy.com

本软件运行后可记录鼠标和键盘(包括小键盘)的动作,同时可以定时、定项记录,并控制软件运行时间、启动热键和存储文件路径等多项功能,随时可以查阅记录,并可以通过互联网发送记录文件。
1 如何启动pcGhost
运行本软件后,程序将驻留内存,时刻记录着键盘和鼠标键的一举一动。第一次运行时,在1秒钟内连按Alt+F12键两次,弹出设置窗口,可设置本软件。每一项的功能都自带说明。把鼠标放在每个项目上,1秒钟后有使用提示出现。
2 如何关闭pcGhost
按热键,弹出pcGhost的窗口,点击<终止运行>按钮。
设置“限制运行的时间”,时间一到,程序自动从内存中退出。

注册版可以保存设置。

下载:http://www.cfan.com.cn/newsoft/download/system/systemsoft/pcGhost.zip

我用W32dasm反汇编后,找到:

:00477978 50                      push eax
:00477979 33C9                    xor ecx, ecx
:0047797B BA787A4700              mov edx, 00477A78
:00477980 B8887A4700              mov eax, 00477A88
:00477985 E8CE90FDFF              call 00450A58
:0047798A 837DFC00                cmp dword ptr [ebp-04], 00000000

:0047798E 0F8499000000            je 00477A2D    不能跳呀!
          909090909090
:00477994 8D85FCFEFFFF            lea eax, dword ptr [ebp+FFFFFEFC]
:0047799A 8B55FC                  mov edx, dword ptr [ebp-04]
:0047799D B9FF000000              mov ecx, 000000FF
:004779A2 E8C1C4F8FF              call 00403E68
:004779A7 8D85FCFEFFFF            lea eax, dword ptr [ebp+FFFFFEFC]
:004779AD E8F2C4FFFF              call 00473EA4
:004779B2 84C0                    test al, al

:004779B4 7477                    je 00477A2D    不能跳呀!
          9090
:004779B6 B201                    mov dl, 01
:004779B8 8B833C030000            mov eax, dword ptr [ebx+0000033C]
:004779BE E80955FBFF              call 0042CECC
:004779C3 33D2                    xor edx, edx
:004779C5 8B8314030000            mov eax, dword ptr [ebx+00000314]
:004779CB E8FC54FBFF              call 0042CECC
:004779D0 B201                    mov dl, 01
:004779D2 8B833C040000            mov eax, dword ptr [ebx+0000043C]
:004779D8 8B08                    mov ecx, dword ptr [eax]
:004779DA FF515C                  call [ecx+5C]
:004779DD C605A9EA470001          mov byte ptr [0047EAA9], 01
:004779E4 68A07A4700              push 00477AA0
:004779E9 8D95E8FEFFFF            lea edx, dword ptr [ebp+FFFFFEE8]
:004779EF 8B45FC                  mov eax, dword ptr [ebp-04]
:004779F2 E82942FEFF              call 0045BC20
:004779F7 8B95E8FEFFFF            mov edx, dword ptr [ebp+FFFFFEE8]
:004779FD 8D85ECFEFFFF            lea eax, dword ptr [ebp+FFFFFEEC]
:00477A03 E8DCD5F8FF              call 00404FE4
:00477A08 8D85ECFEFFFF            lea eax, dword ptr [ebp+FFFFFEEC]
:00477A0E 50                      push eax
:00477A0F B9B07A4700              mov ecx, 00477AB0
:00477A14 B202                    mov dl, 02
:00477A16 8B8310030000            mov eax, dword ptr [ebx+00000310]
:00477A1C E85BCDFDFF              call 0045477C
:00477A21 B8D07A4700              mov eax, 00477AD0
:00477A26 E8118DFDFF              call 0045073C
:00477A2B EB0A                    jmp 00477A37          到此成功注册

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0047798E(C), :004779B4(C)
|
:00477A2D B8F47A4700              mov eax, 00477AF4
:00477A32 E8058DFDFF              call 0045073C          出错框

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00477A2B(U)
|
:00477A37 33C0                    xor eax, eax
:00477A39 5A                      pop edx
:00477A3A 59                      pop ecx
:00477A3B 59                      pop ecx
:00477A3C 648910                  mov dword ptr fs:[eax], edx
:00477A3F 686A7A4700              push 00477A6A

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00477A68(U)
|
:00477A44 8D85E8FEFFFF            lea eax, dword ptr [ebp+FFFFFEE8]
:00477A4A E8BDC1F8FF              call 00403C0C
:00477A4F 8D85ECFEFFFF            lea eax, dword ptr [ebp+FFFFFEEC]
:00477A55 E8E6DBF8FF              call 00405640
:00477A5A 8D45FC                  lea eax, dword ptr [ebp-04]
:00477A5D E8AAC1F8FF              call 00403C0C
:00477A62 C3                      ret

在修改了
:0047798E 0F8499000000            je 00477A2D   
          909090909090
:004779B4 7477                    je 00477A2D   
          9090
后,运行注册成功了,并可以保存设置信息,但是当软件重新启动后仍是未注册版本,删除了保存的设置信息,还需重注册。可能它还有一个注册检测点,但我不知怎么找,请高手帮忙分析一下,我该怎么去找?我一直被此种问题所困,请高手仔细的给讲解一下此种问题(在软件重新启动时,如何去找到它的注册检测点呢?)。谢谢!!!



我的信箱:lihaitao@xaonline.com
          lihaitao@public.xa.sn.cn

  • 标 题:暴力只要改一处,但注册码比较难找。 (233字)
  • 作 者:1212
  • 时 间:2001-1-7 20:03:35

:0047400D 8A45FF                  mov al, byte ptr [ebp-01]


关键在上一行,只要保证al=1就行了。

可以这样改。
0047400D: 83C811                or          eax,011


这样就可完全成功了。但注册码我也找不到,哪位提示一下?

  • 标 题:呵呵 (466字)
  • 作 者:IceFish
  • 时 间:2001-1-7 22:07:54

这个注册码的形式必须为xyyy-yyyyyy
第一个字符必须是a~z之间的字母,
由“-”前面算出一个数值,与
“-”后面的比较
如果相等的话则注册成功!
具体
015F:00473F9A  MOV      CL,[EAX]       
015F:00473F9C  ADD      EBX,ECX
015F:00473F9E  ADD      EBX,000F1DA4
015F:00473FA4  INC      EAX       
015F:00473FA5  DEC      EDX
015F:00473FA6  JNZ      00473F98

以上是pcghost3.4的注册算法
**依次取出数值与0xF1DA4累加求和。

还不明白的话请给我写信scyb@371.net

  • 标 题:注册机如下:) (393字)
  • 作 者:IceFish
  • 时 间:2001-1-7 21:52:04

main()
{int i;
long int sum=0;
char name[15];
printf("\n\n\n * * * * Made By sCYB[CCG],Thank you for using * * * * \n");
printf("\nPlease Enter Your Name:(a-z)\n");
gets(name);
for (i=0;i<strlen(name);i++)
    sum=sum+name[i]+990628;
printf("\nYour Serial is: \n");
printf("%s-%ld",name,sum);
printf("\n\n\n * * * * Made By sCYB[CCG],Thank you for using * * * * \n");

}