前言:本系列为吾爱破解论坛上培训课程的视频记录为文章,将讲师所讲授到的任何细节都记录下来
本课(2015年4月)课件预习 https://www.52pojie.cn/thread-234739-1-1.html
疑问:一个程序加了什么壳?怎么知道这是什么壳。
工具:吾爱OD,学习环境一致
52论坛介绍:
LCG 区,由论坛核心小组成员发布原创软件
LSG,搞安全的,一些木马病毒相关
原创区,发布成品,如图,汉化绿化等等
脱壳破解区,这里一般讨论技术,可以交流问题,也有原创技术文章
移动安全区,搞各种移动安全相关的,主流还是android
软件调试,主要是跟系统相关的东西,系统内核,游戏安全,跟脱壳破解区区分就是软件和系统
编程语言区,开源的一些代码,也讨论一些编程问题
动画区,动画区是很早的一个板块,里面是大家分享的一些实战视频,更直观。动画就是视频
逆向资源区,经常用的逆向工具都有
精品软件区,转载的,非原创的软件
悬赏区,悬赏吾爱币问问题
病毒分析区,通过逆向分析做一些病毒分析的文章,再下面都是一些老区了。
招聘区(略)
Tip:手动选择按照发帖时间排序,看最新的帖子
新手学习: 脱壳破解区上方版主总结的零基础学习教程。版主总结了各种工具,爱盘虚拟机,以此No.学习。新手学习有什么问题先搜索,比如upx怎么脱壳,直接搜索upx。一般你遇到的问题别人都问过了。
课程正文:
现在(15年)比较多的编译工具:VS Delphi 易语言 .NET
最近两年少有新的加壳软件,绝大部分都转入移动安全。
如何识别加壳程序?一般同一编译器编译的程序 入口区段和入口特征都是相同的。入口特征由入口点代码,程序区段,加载模块等信息确认。
从爱盘下载OD,解压后先运行路径修复工具,每次更改路径也要运行,主要是配合一些插件的使用。
一些PE工具,建议新手不用PEiD,用EXEinfoPE取代。
拖入无壳VC6
反汇编窗口,寄存器,数据窗口,堆栈窗口
快捷键:F7 单步调试, F8 单步调试不步入
窗口上方小按钮,选择某个窗口后,程序标题栏会给出该窗口名字信息
L 按钮(log):
程序运行的日志相关信息。插件加载信息。
e 按钮(executable module):
启动的模组,双击可以跳转到基地址
m (内存memeory map):
每个模块加载到内存的基地址都有,可以在PE 代码段上做一些内存写入访问断一下之类的
OD目录下ini可以更改白底黑字
t (线程thread):
应该都是些单线程
w (windows):
h (handle):
一些句柄的信息。
c 反汇编窗口:
回车,随意进入某个call,再点c返回,或者双击EIP
减号,或者shift + 加号,可以回到之前位置或之后位置,即后退和前进
P (Pathes):
比如你把某一段nop掉了
在P里可以还原修复,比如你改了很多,不知哪儿可以看到,就在P里。可以是调用的堆栈
b是断点,这些后面遇到再讲。
OD内存窗口也可以看区段信息
下面可以直观的看到是否加壳,如果你不知道什么意思,就复制去搜索
可得知区段名称,第一个是代码段,数据,资源,这几个代码段是VC6一下就能看出来。
载入到OD
明显看到几个API
几个push的值
这算是它的入口特征。
主要说一下这几个特征对比着看,VC6入口代码固定,api也是相同的(指上面那几个call),唯一可能不同的就是push的那个地址,每个程序push的值不一样。
VS,入口代码第一个是call,第二个是jump。
call进去后下面几个api也永远一样的(建议自己动手od尝试)
第二个jump进去也是一样的
区段比vc6多了一个重定向段 .reloc,因为它多了很多功能就新设了一个段存放。
易语言
有非独立编译和独立编译,非独立编译会带名叫krnln的运行库
载入od,会看到很多带有krnln字眼的明显的信息
点e, F9 run起来,会看到了它加载krnln这个表
非独立编译,如果看不到字符串,尝试按一下ctrl+a(右键分析中的分析代码)
在data段下个断点,运行,进到一个call的地方继续断,运行,enter进入就能看到一堆jump,此时搜索字符串应该能搜索到
独立编译,易语言都会被info识别成vc6,因为它用的是vc6的链接库。
拖入od,代码入口也和vc6一样,可以看module和非独立编译里的一样都有
在getmodulehandle下,有main函数入口。
把代码托到最上,随便找一些call,都会跳到一堆jump的地方。
delphi
区段特征很明显
入口一个getmodulehandle,入口和vc完全不一样
冷门的bc++ 入口很大的jump,后也有getmodulehandle。区段差不多
汇编程序很小
网友评论