博客

nohup 命令日志解决方案

因为nohup 会把输出写到日志文件,但不会自动新建日志,那么这样日志文件可以无限增大,所以这个不是我自己想要的。

如是百度了一下,自己学着写了一个定时命令

cp /root/wx/wx3/nohup.out /root/wx/wx3/back/logfile.`date -d yesterday +%Y%m%d`.log; cat /dev/null > /root/wx/wx3/nohup.out
cd /root/wx/wx3/back; find ./ -mtime +7 -exec tar cvf logfile.`date -d yesterday +%Y%U`.tar {} \; ;find ./ -mtime +91 -exec rm -f {} \;
复制nohup.out日志文件到back文件夹,并以昨天日志命名,然后清空这个nohup.out
然后对7天前日志文件进行压缩,并删除3个月前的所有文件(压缩文件)
crontab -e 编辑去执行脚本就可以了

svn服务器验证失败

因为自己的项目需要,需要把代码同步到云上面,不仅仅在公司的SVN服务器,如果为了方便自己,所以自己搭建一个SVN服务器给自己用。(第三方感觉随时都可能停掉,taobaocode.org就已经不提供服务,所以还不与自己搭建一个给自己使用)

过程参考:https://www.cnblogs.com/weifeng1463/p/7593729.html

结果自己check out代码就死活不行。

自己百度了一下:

1:空格问题(确认空格没有)

2: 配置文件(最终在autuz里面添加[/] 自己忘记写了,教程里面其实写是他自己工程,我自己忘记写一样了)

 

c语言例子—-替换call的地址(call相对地址算法)

背景:

为了熟悉写某个需要替换调用call的代码,但不是hook call。比喻 0x12345678  call 0x1111111。比喻我们替换call 0x11111111调用我们自己的函数,比喻替换成call 0x22222222 ,这样的做的好处,我们只是替换某处逻辑,不用改变0x11111111的逻辑。如果没有明白直接见我的代码例子

 

#include “stdafx.h”
#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
void main(void);
void testRealFunc1(){
printf(“函数1:%x”, testRealFunc1);
}
void testRealFunc2(){
printf(“函数2:%x”, testRealFunc2);
}
void hooktestCall(){
void *p = testRealFunc2;
int testRealFunc2Addr = (int)(p);
//memcpy(&testRealFunc2Addr,(void*)((int)testRealFunc2Addr+1),4);//这才真正的地址,函数名不是真正地址
int moudleAddr = (int)GetModuleHandleW(NULL);
int offset = (0x0F416BE-0xf30000);//调试的计算出来,可以同OD,或者直接VS反汇编查看得出来
int hookAddr =  moudleAddr + offset;
//构造code
unsigned char hookContext[] = {232,0,0,0,0};
//内存地址不对啊
//所以的还得计算
//机器码E8后面所跟的32位数=目标地址-下条指令的地址
//机器码E8后面所跟的32位数=testRealFunc2Addr-(hookAddr+0x5)
int rTestRealFunc2Addr = testRealFunc2Addr – (hookAddr+0x5);
memcpy(hookContext+1,&rTestRealFunc2Addr, 4);//call 0x111 是相对地址,必须要公司转换,还不与mov eax,call eax 做转换,反正都是5个字节
try{
DWORD dwOldCode = 0;
if(VirtualProtect((void*)hookAddr,5,PAGE_EXECUTE_READWRITE,&dwOldCode)){
//直接覆盖内存数据
memcpy((void*)hookAddr, (void*)hookContext, 5);
VirtualProtect((void*)hookAddr,5,dwOldCode,&dwOldCode);
}
}catch(…){
puts(“内存写入失败”);
return;
}
}
void main(void)
{
if(getchar() == ‘h’){
hooktestCall();
}
//代码执行地址,先通过OD找到代码所在的偏移量
printf(“当前模块地址:%x”, GetModuleHandleW(NULL));
puts(“用于测试汇编hook代码”);
puts(“不能在前面改函数”);
testRealFunc1();
getchar();
}

偏移量是我在自己算出来,如果你编译我不知道是不是会改变,如果会改变请自行修改。算法就在注释里面还是比较好理解。

call 立即数 :这个是相对地址,我前面不知道这个逻辑,结果替换时候,用CE查看地址汇编发现指向未知地址,导致奔溃。所以需要我们自己写算法转换。

后面慢慢整理一个系列的文章,这样帮助没有接触过这类的技术人,我自己自学半个月,用c++去写辅助类产品,网上大多数都是易语言。vc 这类的文章很少,以前觉得很神奇,现在发现就是汇编改改代码的问题。

PC微信联系人消息分析

最近在研究PC微信辅助工具,再找好友数据结构,PC微信好友数据结构是二叉树结构。只要找到地址,然后分析到基地址就可以,就可以全局使用了。但我关闭开启微信发现值会变化,那么一想就是DLL每次模块地址不是固定,虽然在OD上面看是一个串数字,我就开始认为不会变化,后面测试几次发现不可以。所以只要获取DLL的入口地址+偏移就可以获取正确的地址。

 

其实好友还是比较好找,因为每次点击好友,就一个变量保存当前的微信ID,当然这个是多次测试发现的规律的。找到字符串指针之后,再找二级指针。然后分析内存地址是不是合适的数据结构。

wordpress个人博客url地址不能带中文解决

按照网上教程快速搭建博客,其他都非常顺利,结果发布文章进行测试发现url地址带中文就无法访问,后面在设置里面设置url生成规则就可以了,不要使用自定义规则,因为会跟你文章的标题有关,如果标题是中文就不能访问。具体导致中文不能访问,可能是编码问题,理论上就算是中文也没有关系的。