
OllyDbg
文章平均质量分 92
墨痕诉清风
始于情,行于心。
展开
-
35. 脱壳篇-UPX和WinUpack压缩壳的使用和脱法
UPX官网:http;//upx.sourceforge.netUPX加壳通过cmd窗口执行,进入upx目录,执行:upx.exe fishc.exe或者直接将exe拖至upx.exe上即可UPX脱壳upx -d abc.exe如果作者在导入表等地方修改的话,这种方式就不可以脱壳了,因为他自己都不认识自己了一般情况下,加壳的程序均为 pushad...原创 2019-03-08 21:23:44 · 1611 阅读 · 0 评论 -
34. 脱壳篇-FSG压缩壳、ImportREC修复IAT输入表的使用,令一种寻找OEP方式
直接将exe拖至FSG进行压缩壳OD打开第一次选择,然后重新加载(Ctrl+F2)这次选择这样结果分析后dump出来,注意:重建输入表不勾选,否则软件崩溃不可用行寻找,我们要引入一个非常优秀的输入表(IAT)修复工具,ImportREC输入OEP输入这两个位置不对,我们输入地址在OD里查询看一下,记得加基...原创 2019-03-08 16:55:58 · 2492 阅读 · 0 评论 -
33. 脱壳篇-重建输入表
OD自动分析MessageBox,call 004011EA,他是怎么分析知道函数MessageBox打开PE头文件,INT我们要重点关注的字段一个是ImageBase基址,一个是Import Table address导入表地址,这里导入表的地址是基地址+偏移地址在代码区搜索导入表地址分析完如下图查找这两个偏移地址就可以看到dll和函数的地址...原创 2019-03-08 15:56:41 · 1070 阅读 · 0 评论 -
32. 脱壳篇-简单带壳的程序、反调试带壳的程序(堆栈平衡原理找OEP、代码段设置断点)
第一个程序OEP为46B6F9PE头位置为46B000到46D000区间,have a nice day! 就是壳一定要点上箭头指向处,dump改名清除区段 ,删除壳,保存第二个程序(市面上60%-80%)根据堆栈平衡原理寻找OEPF8后到下图位置,但并不是OEP因为地址与PE差别大,壳伪造了我们的text,rd...原创 2019-03-07 22:29:18 · 813 阅读 · 0 评论 -
25. PE结构-PE详解之资源
资源结构资源是PE 文件中非常重要的部分,几乎所有的PE 文件中都包含着资源,与导入表和导出表相比,资源的组织方式要复杂很多,其实我们只要看下图就知道俺所言不虚。分3级:1 资源类型 ,2 资源ID, 3 资源代码页, 4 最后指向资源我们知道我们的资源有很多种类型,每种类型的资源中可能存在多个资源项,这些资源项用不同的ID 或者名称来区分。但是要将这么多种类型的不同ID 的资源有...原创 2019-03-05 18:11:46 · 1233 阅读 · 1 评论 -
通过解析PE头,读取dll模块 和 dll模块函数
win32 int main(){//001e1000::MessageBox(NULL, TEXT("111"), TEXT("222"), 0);HMODULE vHmodule = GetModuleHandle(NULL);printf("vHmodule = 0x%08X\n", vHmodule);IMAGE_DOS_HEADER *vImageDosHead...原创 2019-03-05 16:35:48 · 1052 阅读 · 0 评论 -
24. PE结构-PE详解之基址重定位详解
问题一:什么是基址重定位?答:重定位就是你本来这个程序理论上要占据这个地址,但是由于某种原因,这个地址现在不能让你霸占,你必须转移到别的地址,这就需要基址重定位。打个比方:例如你现在计划在某某地方建一栋楼,但是有一天你收到上边的通知,这个地方政府临时要征用建公厕,所以这时候你就没辙,得去别的地方建啦~问题二:为什么需要基址重定位?答:其实这个问题看起来跟前边的有点重复不是? 但是有些...原创 2019-03-05 16:32:47 · 870 阅读 · 0 评论 -
23. PE结构-PE详解之输出表(导出表)
为每一个程序写一个相同的函数看起来似乎有点浪费空间,因此Windows就整出了动态链接库的概念,将一些常用的函数封装成动态链接库,等到需要的时候通过直接加载动态链接库,将需要的函数整合到自身中,这样就大大的节约了内存中资源的存放。如图:有一个重要的概念需要记住:动态链接库是被映射到其他应用程序的地址空间中执行的,它和应用程序可以看成是“一体”的,动态链接库可以使用应用程序的资源,它所拥有的...原创 2019-03-05 15:35:38 · 3709 阅读 · 0 评论 -
22. PE结构-PE详解之输入表(导入表)、屠龙刀W32Dasm(静态)、LordPE(动态)工具入门(查找dll、调用函数)
我们知道PE 文件中的数据被载入内存后根据不同页面属性被划分成很多区块(节),并有区块表(节表)的数据来描述这些区块。这里我们需要注意的问题是:一个区块中的数据仅仅只是由于属性相同而放在一起,并不一定是同一种用途的内容。例如接着要讲的输入表、输出表等就有可能和只读常量一起被放在同一个区块中,因为他们的属性都是可读不可写的。其次,由于不同用途的数据有可能被放入同一个区块中,因此仅仅依靠区块表是无...原创 2019-03-05 13:44:14 · 2565 阅读 · 0 评论 -
21. PE结构-PE各个结构的基本概念
exe与dll几乎没什么区别,唯一区别就是一个字段标识出这个文件是exe还是dll32位叫PE32,64位叫PE32+PE主要定义在winnt.hvc搜索:image format,定义PE结构PE文件分32和64位之分:IMAGE_NT_HEADERS32或IMAGE_NT_HEADERS64第二张图,百度搜索:PE文件格式示意图GetModuleHandle(LPC...原创 2019-03-04 18:44:06 · 1283 阅读 · 0 评论 -
31. 脱壳篇-什么是壳
壳:作用就是保护程序。加壳:先运行壳的代码,对主程序进行压缩或加密保护,因此程序的EP被壳的EP取代脱壳:解压解密,还原之后再用壳调用主程序的EP,主程序的EP叫OEP,主要就是找OEP第一个对小文件比较好第二个对大文件比较好第三个就是7Z压缩壳:ASPack:压缩win32软件的,比如exe,dll,ocxUPX:命令行执行PECompact:...原创 2019-03-04 17:55:02 · 907 阅读 · 0 评论 -
18. OD-反调试研究,破解反调试,编写反调试
病毒、木马、外挂等必须要有的 “安全工作”因为你一个安全软件一旦被成功调试了,就等同于被调戏了,一切主要操作顺序都被人掌握了,只要开发出逆向的突破即可。我们要研究他们这些安全软件如何反调试的比如软件发现被OD打开,直接自爆。。。开始第一个程序F8运行程序找到了弹出反调试报错的callF7程序调用了 IsDebuggerPresent 函...原创 2019-03-04 17:13:56 · 7332 阅读 · 0 评论 -
17. OD-带有多态、变形的程序进行打补丁去掉nag(分析xor加密解密、自身修改代码的程序)
win32程序此程序打开会弹出一个neg,确定后弹出主对话框查找字符串,下断点,发现程序并没有进断点,这些汇编是坑爹的,故意搞混我们此程序非主流,一般我们写的程序均为push ebp往上看代码,发现这些字符均不是代码,好像进入数据段一样,因为这是OD帮你自动分析了我们取消OD的自动分析代码恢复正常自己在异或代码,也就...原创 2019-03-04 16:14:34 · 616 阅读 · 0 评论 -
16. OD-破解序列号验证机算法
我们在GetDlgItemTextA下断点也可以使用命令下断点输入:bpGetDlgItemTextA运行跳转到断点位置发现此界面在动态库领空,我们按alt+F9返回用户领空添加补码,打印esi到messagebox,因为cmp的是esi和获取Edit数据的值做对比记得修改Messagebox的参数打印出乱码...原创 2019-03-04 00:53:17 · 2441 阅读 · 0 评论 -
15. OD-去除程序最后退出时弹出的注册模态对话框,eXeScope、Resource_Hacker工具的学习
退出程序弹出学习eXeScope工具,可以任意修改对话框程序结构及字符串可以找到退出的模态对话框句柄未103103的16进制未67发现前面并没有跳转,得到结论为这是一个函数,那么我们找是谁调用了此函数,查看堆栈信息,反汇编跟随,如下图可以看到上面有一个跳转,那么上一个call就是注册的判断,得到返回值eax做判断跳转我们进入这个call...原创 2019-03-03 22:24:39 · 1321 阅读 · 0 评论 -
14. OD-inline patch入门,将一段代码和变量分别注入一个程序中
分析程序情况第一次进入call为neg第二次进入call为主程序第三次退出程序进入call为neg这个跳转如果改为jmp,那么主程序也没有了那么我们可以试想写一段C程序做判断int i = 0;for (i=0; i<3; ++i){ if (i == 2) 不跳转 else 跳转}寻找PE头,双击数据...原创 2019-03-03 18:18:34 · 775 阅读 · 0 评论 -
13. OD-内嵌补丁,过期的软件DVD Menu Studio破解,switch函数,break等于KillTimer
内嵌补丁指在程序文件中把补丁代码写入文件里面达到破解的目的。查询KillTimer函数,意思是break的意思eax不能等于3,等于4就会进入正确轨道我们回溯cmp eax,3指令,回到跳转该指令的位置直到最开始的switch位置,下断点这里是赋值ax的地方,下图如果我们修改这行代码未mov eax,4,那么这行代码会覆盖下面两行...原创 2019-03-03 16:12:55 · 819 阅读 · 0 评论 -
12. OD-XOFTSPY监控系统软件,通过windows API进行破解(双重验证,聪明的加密师)
此次已GetWindowsTextA来进行查询破解查询GetWindowsTextA,下断点或者Ctrl + n,输入GetWindowTextA,右键选择在每个参考上设置断点点击注册OK停留断点F8一路调试,寻找关键跳转可见是判断al值,那么上一个call可能就是计算加密的函数,下断点进入神奇的发现有两处call地址相同,附近代码也...原创 2019-03-03 11:30:17 · 745 阅读 · 0 评论 -
11. OD-Delphi程序暴力破解
查找关键字符串:Registration可以看到没有任何函数跳转到此行验证成功的代码最上面是retn返回上层函数下面两个jmp跳转到了别处jnz也是跳转到了别的地址尝试jnz改为nop也没有用依然失败右键此行命令,查看哪里还调用了此行指令双击进入我们看到又回到了以前的代码这是Delphi的特性如果看到push 004A5841...原创 2019-03-03 00:31:15 · 4959 阅读 · 0 评论 -
10. OD-VC程序暴力破解
查找字符串:unregistered找到关键位置处后,发现je跳转改为nop并没什么作用关键在于al值为0,所有未注册al值为 esp+4中的值获得esp+4又是两处地址调用得到,如上图右键call两处地址分别下断点调试在第一个端点处调试,则另一个可以取消了eax为函数返回值,后结果被push进我们的断点函数那么上一个call下断点我们输入...原创 2019-03-02 23:37:36 · 2218 阅读 · 0 评论 -
9. OD-PEID的入门及BASIC(VB)开发的程序破解
使用peid可以快速查看PE程序信息,比如连接器12.0,表示vs2003,基址为入口点,偏移地址为文件偏移等基本信息。Ctrl+n ,打开输入输出表输入查找vbaVarTstEq下断点记下注册码,一般注册码都长这样子。注册成功。...原创 2019-03-02 18:59:33 · 791 阅读 · 0 评论 -
8. OD-输入错误的信息注册未注册的软件
you have entered an invalid email address or license number.关键字符串字符串查找找到地址关键函数,此函数断定未al修改的函数可以看下图,得出al将值先存放入bl,下个函数将bl再还给al,如何就return了分别进入函数2和3进入得到结果,bl经过一系列运算后值放入可al,al值为0...原创 2019-03-02 18:15:32 · 488 阅读 · 0 评论 -
7. OD-破解收费版限制天数的软件
找到切入点字符串 <unregistered但是about里面依然是未注册信息我们以<Unregistered Veresion>做尝试继续查找字符串查找到字符串下断点后,查看上一个跳转判断,因为如果此跳转不成立将不显示查找的字符串。修改跳转的标志位设置为反破解成功。高级方法(高手)推理:如果自己写程序,肯定有一...原创 2019-02-28 18:31:47 · 8022 阅读 · 4 评论 -
6. OD-去除收费软件次数限制,去除退出软件时弹出的广告(比如可执行5次)
去除软件次数动态库软断点下次会删除,所以要下硬件断点。硬件断点:右键断点->硬件执行查看硬件断点:调试->硬件断点 一直F8,跟到此处,猜测此call功能为返回ax为1,做计数器减1所以我们改此处代码,mov eax,1,把eax值永久改为1.改为 去除关闭软件后的广告暂停,点击广告,弹出K窗口,找到DoModal,用户领...原创 2019-02-26 15:47:09 · 2045 阅读 · 0 评论 -
5. OD-把限制的功能恢复,把阉割的功能添加(未注册版本,部分功能不可使用的修改)
导入后程序运行F9出现异常, 使用shift+F7/F8/F9来忽略程序异常异常就是程序中的抛异常,比如除数不能为0,对系统有破坏,做异常处理。或者 1. 在弹出程序错误时,提示功能未注册版本限制时,此时地址为0x7xxxxxxx,ret2. 按暂停键3. 点击按钮运行限制功能,界面会停留下来再ret位置,Alt+F9返回用户界面修改,或者点击界面调用者返回上级...原创 2019-02-26 14:34:29 · 1604 阅读 · 0 评论 -
4. OD-去除烦人的nag窗口(去除提醒用户购买正版的警告窗口)
所有函数返回值均放入eax中扩展修改nop选中语句->右键菜单->二进制->用nop填充 三种方式1. 修改标志位je为jmp2. 扩选判断语句+call,全部改为nop3. 修改MessageBoxA第一个参数为14. 修改PE文件头按M窗口,寻找PE头只有77开始的地址不是正确程序PE头。寻找Addersso...原创 2019-02-26 12:23:11 · 1260 阅读 · 0 评论 -
OD-标志寄存器判断语句对照表(汇编标志位寄存器对照表)
原创 2019-02-25 20:08:12 · 1531 阅读 · 0 评论 -
3. OD-爆破有钥匙的exe(有验证文件,如KeyFile.dat)
运行程序,得到对话框,需要已个key文件才可以运行。 需要Keyfile.dat文件。z标志位为0,直接结束程序,使用要改变z标志位为1,继续下一步。test一般为判断eax的值是否为0,改变z标志位。 如上图,jnz判断z标志位是否为0,否则又退出程序如下图,使用修改Z标志位为0. xor ebx,ebx 就是...原创 2019-02-25 19:08:57 · 995 阅读 · 0 评论 -
2. OD-爆破exe验证程序
设置调试入口点 1. 验证码F8跟踪调试2. 猜测GetDlgItemText函数,或者GetWindowsText函数3. 单步跟踪查看输入的字符串找到地址4. 猜测找到对比strcmp函数5. eax寄存器返回错误为06. je标志位会至1,这里我们把je标志位双击改为0,程序成功破解(或者右键je函数、双击、按空格,菜单点汇编,改为nop)。...原创 2019-02-21 12:30:17 · 2208 阅读 · 2 评论 -
1. OD-界面视图及基本快捷键操作,修改hello word
B:删除断点,空格快速切换禁止/打开K:查看堆栈堆栈调用机制M:搜索字符串C:代码窗口Ctrl+F8 等于 一下一下按F8,如果暂停按F12或者按界面暂停按钮。test al,al ;与比较(and)xor ;异或指令neg ebx ;取ebx补码按减号(-):查看哪个call函数调...原创 2019-02-21 12:29:41 · 1742 阅读 · 0 评论