「“原创”」的归档很早就听闻Ghost的大名,界面简洁,响应速度极快,同时支持多人管理,一直以来没想着把玩,这次记起来就做了这个教程,如有纰漏,欢迎指正。 什么是Ghost?Ghost 是一套基于 Node.js 构建的开源博客平台(Open source blogging platform), Linux下Node.js的安装下载最新的nodejs,这里强烈推荐下载官方已编译好的版本,自行编译比较麻烦,而且容易遇到各种诡异的问题。 wget https://nodejs.org/dist/v5.3.0/node-v5.3.0-linux-x86.tar.gz 下载后解压 tar -xzvf node-v5.3.0-linux-x86.tar.gz 解压后将文件夹放到你认为合适的地方 关联全局 ln -s /home/jt4b/node-v5.3.0-linux-x86/bin/node /usr/local/bin/node ln -s /home/jt4b/node-v5.3.0-linux-x86/bin/npm /usr/local/bin/npm ln -s /home/jt4b/node-v5.3.0-linux-x86/bin/n /usr/local/bin/n 这样你就直接能在控制台输入指令了 node -v npm -v 查看版本 安装成功 Ghost的安装以及遇到问题这里下载的是Ghostchina制作的Ghost 0.7.4中文集成版 wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip unzip -uo Ghost-0.7.4-zh-full.zip 解压后进入目录,执行 npm install --production 这时居然报错了,运行npm start看看,可以看到 看来是Ghost并不支持最新版本的node,怎么办呢?还好node附带一个非常方便的管理模块n n 0.10.28 就可以轻松切换到0.10.28版了 (推荐用0.10.21) 此时再执行 npm install --production 就安装成功了。 database: { client: 'mysql', connection: { host : '127.0.0.1', user : 'test', password : 'test', database : 'ghost', charset : 'utf8' }, debug: false } 开启的端口可以自行设置config.js找到如图位置修改 npm start 可以看到顺利启动了,浏览器输入 http://ip:5555 已经能顺利访问。 但这还不行,因为当你结束会话时,任务就会结束。所以此时就要用到forver了 npm install forever -g 安装forver CD进Ghost目录 NODE_ENV=production forever start index.js 这时Ghost就挂载到forver上了,如果想关闭可以通过 forever stop PID 指令进行。 Nginx反向代理设置这时已经可以通过IP:5555访问我们的Ghost了,可这样并不便捷也不美观,这里我要将其绑定到我的二级域名ghost.jt4b.com上 vi /usr/local/nginx/conf/nginx.conf 将下列代码添加进去 server { listen 80; server_name ghost.jt4b.com; location ~ { proxy_pass http://ip:5555; //自行修改 } access_log /home/wwwroot/jt4b.com/log/ghost.log combined; #access_log end error_log /home/wwwroot/jt4b.com/log/ghost.log crit; #error_log end } 这里我启用了日志,不想启用可以改成 access_log off; #access_log end error_log /dev/null; #error_log end 保存后 nginx -s reload 重启nginx 其实这是09年的东西了,比较简单的变形壳,是我当时申请LCG时的考题。最近无意中被我从邮箱内翻出来了,同时又联想到最近fly兄的unpack论坛永久关闭的消息,权当对逝去青春的祭奠了。 考题 脱文 004C5C0D 55 push ebp 004C5C11 8BEC mov ebp, esp 004C5C16 83C4 F0 add esp, -10 004C5C1C B8 D8D44900 mov eax, 0049D4D8 004C5C24 E8 8305F4FF call 004061AC 004C5C29 A1 DCF44900 mov eax, dword ptr [49F4DC] 004C5C31 8B00 mov eax, dword ptr [eax] 004C5C36 E8 5529F9FF call 00458590 jmp 0049D7F4 //跳向的是FOEP 我比较懒选择后者 修复后DUMP下来 首先OD加载 停在 004C5087 > 60 pushad ; 前几句就有花 但是总体看上去是PESPIN 先设置 除了Invalid or privileged instruction之外其他全选 004C5A4D 85C0 test eax, eax ; kernel32.7C800000 004C5A4F 0F84 28060000 je 004C607D 004C5A55 50 push eax 004C5A56 E8 C5FCFFFF call 004C5720 004C5A5B 2BD2 sub edx, edx 004C5A5D F9 stc 004C5A4D 处停下 向下到 004C5AA6 处F4 CTRL+F9 到达 004C579E 60 pushad 004C579F 0BFF or edi, edi 004C57A1 75 16 jnz short 004C57B9 004C57A3 8B9D D9224000 mov ebx, dword ptr [ebp+4022D9] 004C57A9 2D 01000000 sub eax, 1 004C57AE 8B0483 mov eax, dword ptr [ebx+eax*4] 004C57B1 0385 D1224000 add eax, dword ptr [ebp+4022D1] 004C57B7 EB 72 jmp short 004C582B 004C57B9 8B9D D5224000 mov ebx, dword ptr [ebp+4022D5] 004C57BF 8A47 FF mov al, byte ptr [edi-1] 004C57C2 24 7F and al, 7F 004C57C4 8885 2B234000 mov byte ptr [ebp+40232B], al 004C57CA FF37 push dword ptr [edi] 004C57CC 8F85 34234000 pop dword ptr [ebp+402334] 004C57D2 2BC9 sub ecx, ecx 004C57D4 80BD E5264000 C>cmp byte ptr [ebp+4026E5], 0CC 004C57DB 75 05 jnz short 004C57E2 004C57DD 74 01 je short 004C57E0 004C57DF 68 8BEC8B3B push 3B8BEC8B 004C57E4 03BD D1224000 add edi, dword ptr [ebp+4022D1] 花指令有点多 清理下后就清楚多了 004C5833 /76 35 jbe short 004C586A 004C5835 |03BD C9224000 add edi, dword ptr [ebp+4022C9] 004C583B |3BF8 cmp edi, eax 004C583D |76 2B jbe short 004C586A 改为 004C5833 /EB 35 jmp short 004C586A 004C5835 |03BD C9224000 add edi, dword ptr [ebp+4022C9] 004C583B |3BF8 cmp edi, eax 004C583D |EB 2B jmp short 004C586A 向下 004C5877 C3 retn 处F4 继续向下看 004C5B20 FF6424 FC jmp dword ptr [esp-4] 这里壳开始猥琐IAT了 住手 – -||! jmp 004C5B73 004C5B73 8902 mov dword ptr [edx], eax 这样就跳过了IAT加密 拿IMREC dump下地址就填004C5C0D 抓取后发现指针全为真 注:因为是以前的东西,win7以上系统可能会存在兼容问题 |