首页
社区
课程
招聘
[原创]浅谈软件安全设计(二)
发表于: 2007-6-6 11:30 5817

[原创]浅谈软件安全设计(二)

vxin 活跃值
10
2007-6-6 11:30
5817
浅谈软件安全设计(二)

{**************************************************************

  code by 黑夜彩虹 & vxin with almost pure delphi

     Blog:806K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4k6^5K9h3&6Q4x3X3g2#2L8Y4m8S2j5$3E0Q4x3X3g2U0L8R3`.`.

                                                 2007-06-05

                         --- 转载时请保留作者信息。

**************************************************************}

设计模式:

1、转移直接提示信息(很多Cracker会根据注册提示快速找到跳转指令)

2、隐藏跳转指令(很多Cracker会根修改跳转,以达到暴破)

3、伪造成其它语言

具体代码如下:

[Copy to clipboard] [ - ]CODE:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
  const msg1='注册成功!';   //定义提示信息(OD似乎看不到)
        msg2='注册失败';
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);   //隐藏跳转指令方法
Var
  Reg: Integer;
  Str: String;
  FileCrc : DWORD;
  { 很多Cracker破解会根据注册提示来修改跳转,以达到暴破;
  那么我们可以隐藏这个跳转。这是从前辈wxb老大那里学来的}
Begin
reg:=0;
  Try
    reg:=strtoint(edit1.text);
    Reg := 1024 Div Reg; //人为产成DIV 0 异常
    Str := IntToStr(Reg); //不能少,否则Reg没有引用将自动跳过
     showmessage(msg2);  //注册失败!  转移直接提示信息
    Except
     showmessage(msg1);  //注册成功!  转移直接提示信息
  End;
end;

end.
伪装具体步聚(手动,当然也可以利用一些现成的工具)

1、先用ToPo增节工具,打开需要为装的文件,然后在 Bytes to be added: 填入200
Backup file: 打勾
Redirect Entypoint :打勾

执行:Do It!

得到:Result:
200 butes added at:
-memory address:00463000h //修改后的入口地址
-file offset:   0005CC00h

2、用OD调试工具导入需要为装的文件
然后找到它的入口地址:00463000
跟着点击右键-->汇编-->一条条的修改,修改如下:
;伪造VC++入口代码特征
;assume  fs:nothing
push ebp
mov ebp,esp
push -1
push 666666
push 888888
mov eax,fs:[0]
push eax
mov fs:[0],esp
;下边再恢复
pop eax
mov fs:[0],eax
pop eax
pop eax
pop eax
pop eax
mov ebp,eax

3、选择刚才修改的语句,右键-->复制到可执行文件-->选择部份-->再右键-->保存文件

你还可以参考 浅谈软件安全设计(一)

http://bbs.pediy.com/showthread.php?t=40702

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回