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

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

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

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

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

     Blog:http://vxin.unpack.cn

                                                 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

[课程]Android-CTF解题方法汇总!

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