刚写好的程序要用SSL通道来加密数据,为了实现方便通过加载stunnel来实现,程序开始前用CreateProcess打开stunnel,结束后PostMessage(WM_QUIT),但任务栏上该死的stunnel图标却要用鼠标晃一下才消失,没办法只好“帮”它一把:Shell_NotifyIcon,HWND参数可以用FindWindow找到,uID麻烦点,用调试工具拦截stunnel调用Shell_NotifyIcon的地址,uID=1。

posted @ 2006-09-20 22:27 小蚂蚁 阅读(205) | 评论 (1)编辑 收藏

Info Power 是个很棒的VCL,特别是RecordViewDlg控件很有特点,在添加和编辑数据时很有用,但在打开EnterToTab参数时不能跳到确认键上,必须用鼠标操作。还好有它的源码,稍微修改一下就可以了:
//--------------------
//  wwrcdvw.pas
//--------------------
......
      RecordPanel:= TPanel.create(RecordViewForm);
      with RecordPanel do begin
         parent:= RecordViewForm;
         Left := 0;
         Top := 41;
         Align := alClient;
         BevelInner := bvLowered;
         BorderWidth := 4;
         Caption := '';
         TabOrder := 0;   //I hack
         Name:= 'RecordPanel';
         visible:= True;
      end;


      if (rvokShowOKCancel in OKCancelOptions) then begin
         ButtonPanel:= TPanel.create(RecordViewForm);
         with ButtonPanel do begin
            parent:= RecordViewForm;
            Left := 0;
            Top := 0;
            Align := alBottom;
            Name:= 'UserPanel';
            Caption := '';
            TabOrder := 1;  //I hack
            visible:= True;

            OkBtn:= TButton(wwCreateCommonButton(RecordViewForm, bkOK));
            OKBtn.Default:= not (rvoEnterToTab in Options);
            OkBtn.parent:= ButtonPanel;
            OKBtn.visible:= True;
            OKBtn.OnClick := OKBtnClick;
            OKBtn.TabStop:= True;  //I hack

            CancelBtn:= TButton(wwCreateCommonButton(RecordViewForm, bkCancel));
            CancelBtn.Parent := ButtonPanel;
            CancelBtn.visible:= True;
            CancelBtn.OnClick := CancelBtnClick;
            CancelBtn.TabStop:= True; //I hack
            CancelBtn.Cancel:= False; { Allows Escape to be processed }

            bottomPad := 1 + GetSystemMetrics(SM_CYDLGFRAME)*2 +8 +1;  {Win95 fix }
            Height := OkBtn.Top + OkBtn.height + BottomPad;

            OkBtn.Top := GetSystemMetrics(SM_CYDLGFRAME) + 5;
            CancelBtn.Top := GetSystemMetrics(SM_CYDLGFRAME) +5;
         end;
      end;

......

posted @ 2006-09-20 10:46 小蚂蚁 阅读(167) | 评论 (0)编辑 收藏

X32里的系统越来越臃肿,备份好数据我决定重装系统,本来以为用它自带的"一键恢复"会很方便的解决问题,那知道折腾了两个小时,中途居然提示要插交流电源才能继续安装,害得我回家拿,用安装盘安装也用不了这么长时间啊,下回学乖点用GHOST.

posted @ 2006-09-10 12:22 小蚂蚁 阅读(762) | 评论 (0)编辑 收藏

想用我那台FreeBSD服务器做个Live Audio Server,这样我不在家的时候可以了解O宝的情况,用ffmpeg和ffserver没有成功,客户端打开的文件总是为空,用icecast2+darkice时darkice启动出错,icecast2+ice2可以正常用一下,但几分钟后居然把FB也弄死了,没办法只好设置cron每十分钟用ffmpeg录一节,再通过tomcat做个文件列表的jsp来用了。看来是机器太破,PII433+板载声卡可能不合适做这事情。

posted @ 2006-08-28 12:10 小蚂蚁 阅读(166) | 评论 (0)编辑 收藏

Java写桌面还真是麻烦,用swt还勉强,但如果纯手工写的话比在Windows下用WIN API还头大,Eclipse的VEP又不是很好用,今天在网上转悠时发现一个Eclipse的插件SWTDesigner,试了一下还可以,但是要收费的,以前没怎么做过java的crack,于是一下来了兴趣,看了下主要的代码在License*里面,心想简单,写个程序利用他的class来crack,搞了半天老出错,一大堆的依存class没找到,只有另想办法,最后在LicenseActivationKey里的buildLicenseText发现key的算法,改两个字节可以把到期时间加上30年,从新CRC后可以得到Pro版的key,另外SerialNum也要写程序生成一个.搞到半夜1点终于好了.

posted @ 2006-08-28 01:33 小蚂蚁 阅读(558) | 评论 (2)编辑 收藏

以前一直在win32汇编里打滚,对于修改一个exe文件是件很容易的事情,但到了java下发现想修改一个
没源码的.class文件还真是个问题,上网看了一大堆资料,有ASM和Javassist可以做这事情,ASM看上去
很专业,但看了文档好象要在op code的级别下写代码,头晕。Javassist简单些,看完几个sample心里基本
有数了,随手找来一个有日期限制的Taglib,关键的代码猜都不用猜在License.class里,反编译后:
  
public static LicDate d()
{  
  String s = Dec("^%$&^%&*%&");
  return new LicDate.newInstance(Dec("%&&(*(&$%%"), s);
}

s里放着用Dec解码的日期,自己写个小程序:

import javassist.*;

public class Crack {
 public static void main(String args[])
 {
  try
  {
    ClassPool pool = ClassPool.getDefault();
    pool.insertClassPath("./taglib");
    CtClass License = pool.get("License");
   
    CtMethod a = License.getDeclaredMethod("d");
    a.insertBefore("{return LicDate.newInstance(\"MM-dd-yyyy HH:mm:ss\",\"21-30-2088 01:01:01\");}"
    License.writeFile();
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
 }
}

反编译新的License.class发现文件改好了。

posted @ 2006-08-13 16:22 小蚂蚁 阅读(287) | 评论 (0)编辑 收藏

仅列出标题
共5页: 上一页 1 2 3 4 5