• 标 题:给初学者,因为我就是个初学者(2) (1千字)
  • 作 者:liutong
  • 时 间:2000-5-3 11:35:25
  • 链 接:http://bbs.pediy.com

animagic32

介绍:此软件在<<软件世界>>光盘中,制作网页动画的软件
开始用bpx hmemcpy中断然后按F12直到出现错误画面的前一次.
找到CMP [484FC1],00
    jnz *******
直接改此跳转会出现注册成功画面,但选择About菜单或退出重新启动后
仍有未注册提示画面.
追踪过程中,若修改上面跳转后,程序执行了WritePrivateProFileStringA
发现是将用户名,公司名,注册码写入到animagic.ini
综合上面两点,推测程序启动时要读此ini文件,比较后置[00484FC1]
因此设bpm 484FC1后启动程序,找到
call ******
mov [00484FC1],al
注册码的比较一定在CALL中,在CALL上设中断,重新启动程序被中断后,按F8
进入CALL,里面还有一个CALL,按F8进入(因为后面没两句就ret了)
找到了计算过程(原程序用W32dasm存下的程序太大,此段没能拷贝过来)
但其过程如下:
举例说明:
用户名:Killer
将ANIMAGIC16和用户名的ASCII码相加
ASCII(ANIMAFIC16)=2A0
ASCII(转为大写字母(Killer))=263
相加后等于463
463*463=133E49
133E49*16=1A75A46
1A75A46/7=3C7A9C
3C7A9C*463=94DDA54
94DDA54-21=94DDA33

用户名:Killer
注册码:94DDA33

另外此程序还有一个注册码:
将GIFOPT32,用户名和公司名的ASCII码相加
ASCII(ANIMAFIC16)=2A0
ASCII(转为大写字母(Killer))=263
ASCII(转为大写字母(Home))=129
相加后等于58C
58C*58C=1EC490
1EC490*16=2A4E460
2A4E460/7=60B2E9
60B2E9*58C=1860646C
1860646C-21=1860644B

用户名:Killer
公司名:HOME
注册码:94DDA33

程序根据两个字符串ANIMAGIC16和GIFOPT32计算注册码
但不知两个注册码有何区别.