• 标 题:爆破 股海点金2.1 (1千字)
  • 作 者:小楼
  • 时 间:2001-4-17 1:52:08
  • 链 接:http://bbs.pediy.com

爆破 股海点金2.1

    这是软件提供股票买卖中涉及的资金及股票的管理功能,可以实时读入多种行情软件的股价数据。
    要破它主要是无聊,也是从gfh[CCG]那要来的题目。

限制:
    1. 30天限用,到期必须注册。
    2. 若输入错误注册码,软件无提示,进入主界面约3秒后自动退出,同时在安装目录下生成EzStkMan.ini文件,再运行即自动退出;删除EzStkMan.ini文件,又可输入注册码。

工具:
    trw1.23 registered
    hiew
    topo
    wdasm
    procdump1.62
    exescope

    首先用FI.exe查壳,提示为UPX0.93版压缩,用对应UPX解压不能,故手工脱壳:
    bpx loadlibrarya do "d eax" 2次
    见到有kerenel.dll字样后F12返回,F6 pagedown就发现
    cs:005f051B JMP 005F4535 <--OEP!
    在TRW中suspend,用procdump得到解压文件,
    OEP修正为005F4535-00400000=001F4535

    再用FI.exe检查,提示为DEPHI编程,可惜用DEDE反编译失败。

    思考:dephi中设置时间多为object:timer,软件自动退出可能与此有关。

    用EXESCOPE打开DUMP.exe,在RC数据\TMAINFORM中查找“TIMER”,见到5个,
如:object Timer3: TTimer
    Enabled = False
    Interval = 3000
    OnTimer = Timer3Timer
    Left = 217
    Top = 204
    end

    注意Interval = 3000,3000为设置的时间,单位为毫秒,经过一番试验,得知object Timer3: TTimer正控制程序自动退出,将TIMER3的时间Interval =变为0,时间限制即去除。在HIEW中找到相对应的代码位置是cs:005DCB7F,将此的
    B8 0B
改为 00 00  就可以任意注册而不退出,也意味着注册成功。

   
可是我讨厌解压后的大文件,所以更愿意用SMC来解决。
1 用TOPO为主程序EzStkMan.exe加50BYTES,入口变为005F4508。
2 CS:005F4509  E927000000            JMP 005F4535 <--原入口
3 CS:005F051B                        JMP 0058CBD4 <--OEP
        变为  E9F03F0000            JMP 005F4510 <--PATCH CODE
4 CS:005F4510  C7057FCB5D000000074F  MOV DWORD [005DCB7F],4F070000
    005F451A  E9B586F0FF            JMP 0058CBD4 <--RETURN
ok!