首页
社区
课程
招聘
使用
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2017-12-19 15:39
0
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2014-7-28 18:06
0
[招聘]瑞得天成招聘C++
我们公司是做互联网媒体的,C++岗位工作内容在上面,有意向可以电话或者邮件联系。
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2013-12-6 02:29
0
某公司笔试题目 求助
利用宏实现是最简单的,print在main上面,就可以把main定义为任何宏所定义内容

void print()
{
    printf("hello world\n");

    #define main main(){print();} void null
}

void main()
{

}

宏解开后为下面代码:
-----------------------------------------
void print()
{
    printf("hello world\n");

   
}

void main(){print();} void null()
{

}
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2013-4-13 21:42
0
[分享]刘涛涛的EXEToC的代码
这不就是IDA F5的功能嘛,如果程序完善了,完全可以给一个exe转化为C源码了,再配合Source Insight就像分析开源代码一样爽了,期待大神完美此神器
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2013-3-16 00:06
0
[求助]如何获取一个过程的Size
我写的一个基于 ade32反汇编引擎的一个计算函数长度的一个函数

//计算函数大小,自己写的,绝对可靠,可识别VC编译出来的死循环,没有RET的函数
ULONG SizeOfFunction(PVOID lpFun)
{
    ULONG  Length;
    ULONG  Result = 0;
    PBYTE  pCode=(PBYTE)lpFun;
    disasm_struct diza;
   
    UINT   max_len=0; //通过跳转指令偏移已知的最后指令位置
   
    do
    {
        Length = ade32_disasm(pCode,diza);
        
        if ( Length==5 && diza.disasm_opcode == 0xE9 )
        {
            long offset=*(LONG *)&pCode[1];
            
            //TRACE("max_len:%d Result:%d Length:%d opcode %08X offset:%d\n",max_len, Result, Length, diza.disasm_opcode, offset);
            
            //死循环函数处理,如果向后跳,正常方法
            if (offset>0)
            {
                if (max_len<Result+Length+offset)
                {
                    max_len=Result+Length+offset+1;
                }
               
            }else{
               
                //如果向后跳,且现当前指令执行完后的代码长度大于max_len,则认为后面没有其他代码了
                if (Result+Length+1>max_len)
                {
                    //print_opcode(pCode,Length);
                    Result += Length;
                    break;
                }
               
                if (max_len<Result+Length+offset)
                {
                    max_len=Result+Length+offset+1;
                }
               
            }
        }
        
        if ( Length==2 &&  diza.disasm_opcode == 0xEB )
        {
            char offset=(char)pCode[1];
            
            //TRACE("max_len:%d Result:%d Length:%d opcode %08X offset:%d\n",max_len, Result, Length, diza.disasm_opcode, offset);
            
            
            //死循环函数处理,如果向后跳,正常方法
            if (offset>0)
            {
                if (max_len<Result+Length+offset)
                {
                    max_len=Result+Length+offset+1;
                }
               
            }else{
               
                //如果向后跳,且现当前指令执行完后的代码长度大于max_len,则认为后面没有其他代码了
                if (Result+Length+1>max_len)
                {
                    //print_opcode(pCode,Length);
                    Result += Length;
                    break;
                }
               
                if (max_len<Result+Length+offset)
                {
                    max_len=Result+Length+offset+1;
                }
               
            }
        }
        
        if ((Length == 2) && (diza.disasm_opcode >= 0x70 && diza.disasm_opcode <= 0x7F))
        {
            if (max_len<Result+Length+(char)pCode[1])
            {
                max_len=Result+Length+(char)pCode[1]+1;
            }
            //TRACE("offset:%d max_len:%d \n", (char)pCode[1], max_len);
        }
        
        //print_opcode(pCode,Length);
        Result += Length;
        
        if ((Length == 1) && (diza.disasm_opcode == 0xC3) && Result>=max_len)
        {
            //TRACE("0xC3 %d %d %d\n", max_len, Result, Result>=max_len);
            break;
        }
        
        if ((Length == 3) && (diza.disasm_opcode == 0xC2) && Result>=max_len)
        {
            //TRACE("0xC2 %d %d %d\n", max_len, Result, Result>=max_len);
            break;
        }
        
        pCode +=Length;
        
        //TRACE("Result-Len:%d", Result);
    } while (Length);
   
    //TRACE("Result-Len:%d", Result);
   
    return Result;
}
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2013-3-13 23:01
0
[求助]查不到壳但是提示代码被加密,压缩...
你的先熟悉od,等一些调试工具,就知道怎么入手了
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2013-3-13 22:57
0
[求助]求推荐一款虚拟机模式的PE调试器
谢谢啊,应用层的好虚拟执行,就是转入内核层,这个很是麻烦
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2013-3-13 20:13
0
[求助]查不到壳但是提示代码被加密,压缩...
估计是非公开壳,或者自定义壳,也就是他程序里自己加载的PE模块,这个PE模块也许还是加过壳的

友情提示: 动态调试,在LoadLibrary上断点,寻找PE Loader 代码,找到后,分析Loader解析后的内存模块,dump出来
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2013-3-13 20:03
0
[讨论]讨教目前妨碍IDA分析的技术(非F5)
有个花指令,可以防止 F5
雪    币: 61
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
天地孤星 1 2013-3-12 04:24
0
如何过360修改Hosts文件
你在IE内可以做动作,360有个urlproc.dll在IE加载时会 CreateFile("...\Hosts") 文件,使用这个句柄操作应该不会提示什么
精华数
RANk
61
雪币
11
活跃值
关注数
粉丝数
0
课程经验
0
学习收益
0
学习时长
基本信息
  能力排名: No.2292
  等    级: LV4
活跃值  活跃值:活跃值
  在线值:
  浏览人数:134
  最近活跃:----
  注册时间:2006-07-08
勋章
能力值

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册