【吾爱破解第二期】操作学习笔记

这期讲师是kido,感谢kido。

一,API( application programing interface):

【在window上程序需要弹窗之类等等操作都需要调用系统的API才能实现】

MessageboxA/W 消息框

ShellexecuteA/W 控制台执行

方法 open url

WinExec Windows执行

方法 explorer.exe url

CreateProcessA/W 创建进程

方法 path url

CreateThread 创建线程

Reg Create KeyExA/W 注册表 创建 键值

Reg Open KeyExA 注册表 打开 键值

Reg Delete KeyExA/W 注册表 删除 键值

二,脱upx壳

手工脱工具:Scylla 步骤:OD ctrl+B 搜索 00 00 00 00 00 00 00 00 00 找到jmp F2下断点 到断点后单步走,然后把单步到的地方ctrl+X复制出地址 ,用Scylla搜索这个地址,否,然后dump出来,再把dumo出来的文件修复,就OK了。 传统方法:ESP定律 内存方法

三,C32Asm分析文件

由于是软件是弹窗广告,搜索http,右键用十六进制00 把搜索到的 explore http:www.XXX.com 填充。

注:为了让程序在多语言环境中run,字符集中有 小点填充,A和W的意思是就是 ansi(ascii) ,WideChar(Unicode)。

三,用od分析实例1

找到expore弹窗广告的push地址,左下角ASCII数据ctrl+G转到地址,选文本型32位可查看到广告,右键二进制用00填充。(如果带壳会出现 可执行文件无法定位数据)。

ShellexecuteA/W 和 WinExec 接口一般人都会用来弹广告。

当别人用MessageboxA/W弹广告时,可以用F12大法(暂停)开始分析,OD上点击K,可以查看应用调用的堆栈,进入messagebox之后,在retn的地方下断点。去掉,单步F7走,右下角可直观的看到messagebox的函数参数,把函数所有参数直接右键二进制nop填充。如果只nop一部分,残余的东西推入堆栈,retn返回的堆栈数量不一致,程序会崩溃。或者直接汇编jmp跳过函数

智能搜索字符串搜不到的情况下,如何找到所有广告呢,直接给所有的api下断点,用NOP大法解决。

注意nop的数量要和OD右下角进堆栈的数量一样。

四,实例2 快速脱北斗壳NsPack

常见的方法有ESP定律,这里用了kido老师的快速方法。ctrl+F popad,直到查找到jnz,retn,retn,在第二个retn下断点,跑到断点,单步,右键分析,从模块中删除分析,到了call,用scylla搜索这个地址,老办法dump+fix dump即可。

五,分析实例2

直接搜索字符串,发现是修改注册表的,nop的话太多了,直接在call头push处使用retn大法

发现软件内有内置的浏览器广告,可以用ResEdit 分析,kido用的是ResScope_Hacker 比较老,不推荐。例外,易语言的资源是自己模拟的,用这种办法不可以。

右下角出现弹窗,用ProcExp可以分析其是哪一个程序的广告。创建窗口的api有CreatewindowExW(创建窗口)和Dialogbox(对话框),直接搜是搜不到的,Dialogbox原型是DiaogBoxParamA/W,Ctrl+B(跟随表达式) 搜索API名字,下断点分析。用三大法解决。

VB是调用自己的API弹广告,有个弹广告通用解法 winHex直接00抹掉字符串

最后kido还介绍了俩工具:procmon和api monitor 都可以分析应用所有的行为

这节课最有价值的东西是 nop retn F12三大法!

猜你喜欢

转载自www.cnblogs.com/tomq/p/10505893.html