|
调试文件中,遇到OD直接 已终止的 情况
遇到一个和楼主挺类似的问题,但不知道楼主是怎么解决的,能把解决思路大概说说吗?谢谢~ |
|
求助关于push 程序名.地址 形式语句的意思
我刚接触这方面不久,对这个问题也是很模糊,求助 |
|
以下两个密文用的是什么加密方式?有没有相关解密工具?
除非经验丰富靠密文的形式进行猜测,否则单凭一条密文很难分析出加密方法的,能否提供任何关于密文的相关信息? |
|
分析一个trojan
我想,如果用F9运行到他监听状态,然后找一个该木马监听的程序随手打一段账号密码他不就进入发送模块了吗..或者直接查找读取输入的API函数吧 ,说不定会有收获? |
|
逆向的幼稚园小问题 待解
汇编代码我还没看,但另外C源代码里也是不可能有d=1的,假设你的while条件打错了,程序在switch进入case 0,则 case 0: d = 1 ; case 1: d = c; break; 由于case 0里没有break,因此在执行完d=1后会继续进入case 1执行d=c的语句,然后通过break离开这个switch 由于还没看上边的汇编,不知道是不是你的C代码打错的原因 刚看了汇编部分,发现确实同C代码一样。既然如此这个函数无论传入的a和b是什么,最终返回的d必然为0 附上汇编代码: 00413570 push ebp 00413571 mov ebp,esp 00413573 sub esp,0E8h 00413579 push ebx 0041357A push esi 0041357B push edi 0041357C lea edi,[ebp-0E8h] 00413582 mov ecx,3Ah 00413587 mov eax,0CCCCCCCCh 0041358C rep stos dword ptr es:[edi] ;前边都不看了,无关逻辑,从下边一行开始 0041358E mov eax,dword ptr [a] ;把a的值放入eax 00413591 add eax,dword ptr ;把b的值同eax中的值相加,即实现a+b 00413594 mov dword ptr [d],eax ;把eax的值送到d中,即实现d = a + b 00413597 mov dword ptr [i],1 ;把1送入i,即i = 1 0041359E mov dword ptr [c],0 ;同上,c = 0 004135A5 cmp dword ptr [c],64h ;cmp是一个比较语句,将c和64h进行比较(64h即为十六进制数的64,对应十进制数的100) 004135A9 jge myfunction+46h (4135B6h) ;在上一行比较后的跳转语句,jge为大于等于时跳转,这两行结合起来即为当c>=100时进行跳转,即while(c < 100) 004135AB mov eax,dword ptr [c] ;将c的值送入eax中 004135AE add eax,dword ptr [i] ;将i的值与eax中的值相加,即实现c + i 004135B1 mov dword ptr [c],eax ;将eax的值送入c,这三行即实现c = c + i 004135B4 jmp myfunction+35h (4135A5h) ;jmp为无条件跳转语句,相当于高级语言里的goto,这里跳转到4135A5这行也就是上边cmp比较语句的这行,从4135A5到这一行就是整个的while语句 004135B6 mov eax,dword ptr [c] ;把c送入eax 004135B9 mov dword ptr [ebp-0E8h],eax ;eax送入一块地址为ebp-0E8h的内存中 004135BF cmp dword ptr [ebp-0E8h],0 ;将ebp-0E8h里的值同0进行比较,即将c同0比较 004135C6 je myfunction+63h (4135D3h) ;je为若比较结果相等则跳转,此两行即为case 0 004135C8 cmp dword ptr [ebp-0E8h],1 ;将ebp-0E8h里的值同1进行比较,即将c同1比较 004135CF je myfunction+6Ah (4135DAh) ;je为若比较结果相等则跳转,此两行即为case 1 004135D1 jmp myfunction+72h (4135E2h) ;若上述两个case都不符合,即c既不等于0也不等于1,则进入default,在此处即为向default跳转 004135D3 mov dword ptr [d],1 ;此处即为case 0跳转来的位置,将1送入d中,即实现d = 1 004135DA mov eax,dword ptr [c] ;此处即为case 1跳转来的位置,同时也是case 0里的d = 1执行完后的下一条语句(由于case 0没有break,因此执行完case 0后进入case 1)。这一行的作用是将c送入eax中 004135DD mov dword ptr [d],eax ;将eax的值送入d中,结合上一行,这两行实现了d = c 004135E0 jmp myfunction+79h (4135E9h) ;跳转至4135E9,即这个switch的出口,这一行就是case 1里的break 004135E2 mov dword ptr [d],0 ;此处是default跳转来的位置,将0送入d中,即实现d = 0 004135E9 mov eax,dword ptr [d] ;这里是整个switch的出口,将d送入eax中 004135EC pop edi ;edi出栈,以下几行同开头几行一样无关逻辑,咱们就不分析了 004135ED pop esi 004135EE pop ebx 004135EF mov esp,ebp 004135F1 pop ebp 004135F2 ret ;ret(或retn)即为一个调用的返回,即一个子程序或函数的出口 刚到看雪论坛不久,也不知道怎么能把帖子编辑的整齐一些,各位凑合着看吧,不好意思了。其实这会儿也是闲着,因为不知道楼主对相关知识掌握的如何,所以写写这些注释,要是有什么地方冒犯了还请别见怪~注释的这些也只是我个人理解~ |
|
逆向的幼稚园小问题 待解
从你的C源代码里看,最终返回的应该是d=0呀.. int i = 1; int c = 0; while (c < 100) { c = c+i; //当离开此循环时,c = 100 } switch (c) //c = 100 { case 0: //跳过 d = 1 ; case 1: //跳过 d = c; break; default: //执行这部分语句,使得d = 0 d = 0; } |
|
与软件同时启动的过期提示,下什么样的断点?
楼上两位的思路都很不错,尤其是3楼对于此类问题从时间调用入手,感觉很妙 |
|
如何在短时间内提高主机权限并且不被发现
额...我再审审题,是说在1分钟内获得管理员权限进行文件操作,之后再恢复成原权限吗? |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值