http://blog.sina.com.cn/u/1247335455[订阅]
个人资料
分类
    内容读取中…
评论
读取中...
访客
读取中...
好友
读取中...
博文
分析技术(2006-08-12 14:06)
在进行软件的破解、解密以及计算机病毒分析工作中,一个首要的问题是对软件及病毒进行分析。这些软件都是机器代码程序,对于它们分析必须使用静态或动态调试工具,分析跟踪其汇编代码。

一、从软件使用说明和操作中分析软件

  欲破解一软件,首先应该先用用这软件,了解一下功能是否有限制,最好阅读一下软件的说明或手册,特别是自己所关心的关键部分的使用说明,这样也许能够找点线索。

二、静态反汇编

 所谓静态分析即从反汇编出来的程序清单上分析,从提示信息入手进行分析。目前,大多数软件在设计时,都采用了人机对话方式。所谓人机对话,即在软件运行过程中,需要由用户选择的地方,软件即显示相应的提示信息,并等待用户按键选择。而在执行完某一段程序之后,便显示一串提示信息,以反映该段程序运行后的状态,是正常运行,还是出现错误,或者提示用户进行下一步工作的帮助

软件保护(2006-08-12 14:03)
软件的破解技术与保护技术这两者之间本身就是矛与盾的关系,它们是在互相斗争中发展进化的。这种技术上的较量归根到底是一种利益的冲突。软件开发者为了维护自身的商业利益,不断地寻找各种有效的技术来保护自身的软件版权,以增加其保护强度,推迟软件被破解的时间;而破解者则或受盗版所带来的高额利润的驱使,或出于纯粹的个人兴趣,而不断制作新的破解工具并针对新出现的保护方式进行跟踪分析以找到相应的破解方法。从理论上说,几乎没有破解不了的保护。对软件的保护仅仅靠技术是不够的,而这最终要靠人们的知识产权意识和法制观念的进步以及生活水平的提高。但是如果一种保护技术的强度强到足以让破解者在软件的生命周期内无法将其完全破解,这种保护技术就可以说是非常成功的。软件保护方式的设计应在一开始就作为软件开发的一部分来考虑,列入开发计划和开发成本中,并在保护强度、成本、易用性之间进行折衷考虑,选择一个合适的平衡点。

  在桌面操作系统中,微软的产品自然是独霸天下,一般个人用户接触得最多,研究得自然也更多一些。在DOS时代之前就有些比较好的软件保护技术,而在DOS中使用得最多的恐怕要算软盘指纹防拷贝技术了。由于DOS操
大整数相乘(2006-08-11 20:27)
#include<iostream.h>
#include<stdlib.h>
#define 10
int main()
{
    int i,j,set=0;
    char k[N];
    int a[N],b[N],c[2*N];
    for(i=0;i<N;i++)//cin.getline(c,N);//for(i=0;i<N;i++) a[i]=c[i]-48;
                   //cin.getline(c,N);//for(i=0;i<N;i++) b[i]=c[i]-48;
        a[i]=rand()%N;
        b[i]=rand()%N;
    }
    //
    cout<<'整数A :';
    for(i=N-1;i>=0;i--)
        cout<<a[i];
大道至简 
                                                                   ——软件工程实践者的思想 
 
                                       周爱民(Aimingoo) 著

                            &nbs

第2章  是懒人造就了方法


             “僰蘭道有蜀王兵 ,亦有神作大滩江中。其崖崭峻不可破,(冰)乃积薪烧之。” 
                                                                                              ——《华阳国志》


1.  是懒人造就了方法 


            战国时期

1.你我都是单翼的天使,唯有彼此拥抱才能展翅飞翔。我来到世上就是为了寻找你,千辛万苦找到你后却发现:TMD!咱俩的翅膀是一顺边的!   
2.深夜布什看到拉登站立在自己床前,批头散发,布什大惊说:你好大胆,敢夜闯白宫!拉登甩了甩齐胸的胡子,阴森森地笑了,说:飘柔,就是这样自信!   
3.有一颗豆,跌倒了,它气馁,情绪低落。这豆就是我,有什么能鼓励它站起来呢?答案就是你!因为有一样东西,叫“猪鼓励豆”。   
4.如果我是狐狸你是猎人,你会追我吗?如果我是茶叶你是开水,你会泡我吗?如果我是汽车你是司机,你会驾我吗?如果你是钱我是存折,我一定会取你的。   
5.当你在路上遇到狗的时候不要惊慌,要勇敢地与它博斗,顶多会有三种结果:一是你赢了,你比狗厉害;二是你输了,你连狗都不如;三是你们打平了,你和狗一样。   
6.如果天上落下一滴水,那是我想你而流的泪;如果天上落下两滴水,那是我爱你而心醉;如果天上落下无数滴水,那则是…… 别瞎想了,下雨了!   
7.尊敬的用户您好:您的话费余额已不足0.1元了,请您于近日内,卖儿卖女

如何系统地学习linux
2006-05-09 18:44 pm
作者:linux-fox
来自:linux知识宝库 (http://www.linuxmine.com)
现存:http://www.linuxmine.com/5723.html
分类:学习方法





不明白?欢迎到 linux论坛 (http://bbs.linuxmine.com) 参加讨论!

linux太难用了!(一通鼠标点击,进入/etc)
学习linux,你忘记windows的思维方式了吗?
怎么安装软件阿?那一堆文件是干什么的阿?
学习linux,你还在浮躁吗?
进入linux,随便按了几下.赶紧重启进入win
学习linux,你用心了吗?
.......
/*
    全选主元高斯消去算法,求解线性方程组 A * x = b
    By Kingwei  2005.2.27
*/

#include <stdio.h>
#include <math.h>

#define EPS        1e-11

#define MAX_DIM        20

int GaussLEquation(double x[], int dim, double A[][MAX_DIM], double b[])
{
    int maxColPos[MAX_DIM], maxRowPos;
    double maxElem, absElem, temp;
    int k, i, j, status = 1;
    
    for (k=0; k<dim; k++)
    {
        maxElem = 0.0;
        for (i=k; i<dim; i++)
            for (j=k; j<dim;
万年历算法(2006-08-01 18:16)
一、 阳历算法

具体算法见函数Void get_solar_day_date(void),这样阳历日历的星期排法就确定了。
表1:


月份 1 2 3 4 5 6 7 8 9 10 11 12
闰年 31 29 31 30 31 30 31 31 30 31 30 31
非闰年 31 28 31 30 31 30 31 31 30 31 30 31

变量定义:
Public:
Unsigned int temp_total_day;
Unsigned char gc_solar_calendar_year;
Unsigned char gc_solar_calendar_month;
Unsigned char gc_solar_calendar_date;
Unsigned char gc_lunar_calendar_year;
Unsigned char gc_lunar_calendar_month;
Unsigned char gc_lunar_calendar_date;
Unsigned char start_day_of_week;
说明:函数get_solar_day_date(void)的输入变量:gc_solar_calendar_year和
gc_solar_calendar_month
输出变量:start_day_of_week和temp_total_day
Void get_solar_day_date(void)
{
unsigned char temp01;
/*------calculate what day is the day of the current month and year. Mon~Sun?---
*/
/*条件初始化二次,减少运算数据量. temp_total_da
骑士周游算法(2006-08-01 18:15)
*===================骑士周游算法--用链栈实现===================*/
#include<stdio.h>
#include <malloc.h>
#define LEN sizeof(struct stack)
struct stack
{int row;
int col;
int dir;
struct stack *next;
struct stack *prior;
};
struct stack*head = (struct stack*)malloc(LEN);
struct stack*q=head;

void push(int i,int j,int v)
{
struct stack *p=(struct stack*)malloc(LEN);
p->row=i;
p->col=j;
p->dir=v;
p->next=q;
q=p;
}

void pop()
{struct stack *temp;
temp=q->prior;
free(q);
q=temp;

}
void start()
{ int y,z,v=0;
int i,j;
int move[8][2]={2,1,1,2,1,-2,2,-1,-2,1,-1,2,-1,-2,-2,-1};
int c[6][6];
for(i=0;i<6;i++)
{for(j=0;j<6;j++)
c[j]=0;
}
printf('input y:');
scanf('%d',&y);
printf('input z:');
scanf('%d',&z);
int account=0;
whil