160 - 41 defiler.1.exe

环境:
Windows xp sp3

工具:
Ollydbg
stud_PE
LoadPE

先分析一下。
这次的程序要求更改了,变成了这个:

defiler's reversme no.1
-----------------------The task of this little, lame reverseme is to add some code to it.
The code you have to add will be triggered by the 'Exit' menu and should
look like this:A messagebox should appear asking the user "Do you fickbirne really want to quit?".
Its buttons should be 'Yes' and 'No'. If the user clicks 'Yes', simply exit the
program in a clean way, if the user clicks 'No' just do NOT exit the program
(it's up to you what will happen when the user clicks 'No').Valid solutions are solutions with a tutorial explaining what you did,
explaining the code you added and the modified binaries.Mail your solution to defiler@immortaldescendants.org
Valid solutions will be published on http://immortaldescendants.org,
the first solution will be on http://defiler.cjb.netthats it.. i hope i didn't forget any more unimportant stuff ;)best regards,defiler

其实就是程序的菜单栏的Exit选项没有功能,让我们把加个messagebox下去,实现这个Exit选项。

OD载入,直接运行,点击菜单栏,选About选项,弹出messagebox,F12站厅,Alt+F9,点击确定。断下来到这里:

0043CCE2  |.  64:FF31       push dword ptr fs:[ecx]
0043CCE5  |.  64:8921       mov dword ptr fs:[ecx],esp
0043CCE8  |.  53            push ebx                                 ; /Style
0043CCE9  |.  57            push edi                                 ; |Title
0043CCEA  |.  56            push esi                                 ; |Text
0043CCEB  |.  8B45 FC       mov eax,[local.1]                        ; |
0043CCEE  |.  8B40 24       mov eax,dword ptr ds:[eax+0x24]          ; |  这个是messageBox所属的hwnd
0043CCF1  |.  50            push eax                                 ; |hOwner
0043CCF2  |.  E8 C998FCFF   call <jmp.&user32.MessageBoxA>           ; \MessageBoxA
0043CCF7  |.  8945 F8       mov [local.2],eax                        ;程序暂停后的位置

单步F8往下走:

00430528  /$  53            push ebx
00430529  |.  33DB          xor ebx,ebx
0043052B  |.  0FB7D2        movzx edx,dx
0043052E  |.  33C9          xor ecx,ecx
00430530  |.  E8 53FFFFFF   call defiler_.00430488                   ;  获取点击后的位置
00430535  |.  85C0          test eax,eax                             ;  确认点击的是哪个东西
00430537  |.  74 07         je Xdefiler_.00430540                    ;  
00430539  |.  8B10          mov edx,dword ptr ds:[eax]               ;  
0043053B  |.  FF52 40       call dword ptr ds:[edx+0x40]
0043053E  |.  B3 01         mov bl,0x1
00430540  |>  8BC3          mov eax,ebx
00430542  |.  5B            pop ebx
00430543  \.  C3            retn

在00430535下断点,重新运行程序,点击菜单栏,选About,程序断下。观察EAX的值:

数据窗口跟随:
显示方式改为:长型 -> 地址

可以猜测上一个call是用来确定菜单栏的选项的。
让程序重新运行,这次点Exit

看出这两个的值是不同的,于是可以用eax的值来判断点击的内容。

现在可以开始添加代码了。
首先先用LoadPE删除重定位信息。
打开LOadPE后用PE编辑器加载程序。

设置为0

然后就保存

再用stud_PE打开,添加section

大小设置为0x1000,用NULL填充

点击Add添加,完成后双击新建的section

设置一下Characteristics flags为0xE00000E0
顺便记一下VirtualOff:4E000
save一下。

OD载入这个修改过的程序,跳转到44E000处,然后就可以开始添加代码了。

思路是这样的:
在00430530处的call后获取了点击的内容,然后就直接跳转到44E000处进行判断,根据内容来确定接下来的程序。如果是“About”的值就直接返回去源代码处,否则就是exit的值了,就可以弹出消息框,根据用户点击来确定点击内容从而判断接下来的行为。

0044E000    85C0            test eax,eax
0044E002  - 0F84 3825FEFF   je 复件_def.00430540                     ;这里就和原代码相同,如果为空就跳过
0044E008    60              pushad
0044E009    8B0D D0FB4300   mov ecx,dword ptr ds:[0x43FBD0]          ; 复件_def.004407C8
0044E00F    8B09            mov ecx,dword ptr ds:[ecx]
0044E011    90              nop
0044E012    90              nop
0044E013    90              nop
0044E014    81C1 04230000   add ecx,0x2304                            ;这个值会有所改变,在xp上是0x2304,在Win8.1的话则是0x22A0,具体原因能力有限
0044E01A    3BC1            cmp eax,ecx                               ;这里就判断eax的值是"ABout"还是"Exit"的
0044E01C    61              popad
0044E01D    8B10            mov edx,dword ptr ds:[eax]
0044E01F    75 05           jnz X复件_def.0044E026
0044E021  - E9 1525FEFF     jmp 复件_def.0043053B
0044E026    A1 D0FB4300     mov eax,dword ptr ds:[0x43FBD0]
0044E02B    8B00            mov eax,dword ptr ds:[eax]
0044E02D    83C0 24         add eax,0x24                               ;这里是获取handle,具体的原因可以看一开始程序断下时的messagebox
0044E030    6A 24           push 0x24
0044E032    68 58E04400     push 复件_def.0044E058                     ; ASCII "Quit"
0044E037    68 60E04400     push 复件_def.0044E060                     ; ASCII "Are you sure quit?"
0044E03C    FF30            push dword ptr ds:[eax]
0044E03E    E8 7D85FBFF     call <jmp.&user32.MessageBoxA>
0044E043    83F8 06         cmp eax,0x6                                ;0x6为“Yes”,0x7为“No”
0044E046    74 05           je X复件_def.0044E04D
0044E048  - E9 F124FEFF     jmp 复件_def.0043053E                       ;如果是“No”就跳回去原来的位置
0044E04D    6A 00           push 0x0
0044E04F    E8 D831FBFF     call <jmp.&kernel32.ExitProcess>
0044E054    0000            add byte ptr ds:[eax],al
0044E056    0000            add byte ptr ds:[eax],al
0044E058    51              push ecx                                    ;这里开始往下就是字符串的值了
0044E059    75 69           jnz X复件_def.0044E0C4
0044E05B    74 00           je X复件_def.0044E05D
0044E05D    0000            add byte ptr ds:[eax],al
0044E05F    0041 72         add byte ptr ds:[ecx+0x72],al
0044E062    65:2079 6F      and byte ptr gs:[ecx+0x6F],bh
0044E066    75 20           jnz X复件_def.0044E088
0044E068    73 75           jnb X复件_def.0044E0DF
0044E06A    72 65           jb X复件_def.0044E0D1
0044E06C    2071 75         and byte ptr ds:[ecx+0x75],dh
0044E06F    69743F 00 00000>imul esi,dword ptr ds:[edi+edi],0x0

修改完44E000的代码后,再修改一下 00430530后面的内容

0043052B   .  0FB7D2        movzx edx,dx
0043052E   .  33C9          xor ecx,ecx
00430530   .  E8 53FFFFFF   call 复件_def.00430488
00430535   .- E9 C6DA0100   jmp 复件_def.0044E000                      ;  改了这里
0043053A      90            nop
0043053B   .  FF52 40       call dword ptr ds:[edx+0x40]
0043053E   .  B3 01         mov bl,0x1

修改完后保存一下就好了

完成 O(∩_∩)O

参考:
https://www.52pojie.cn/thread-654237-1-1.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

160 - 44 defiler.1.exe

环境&#xff1a; Windows xp sp3 工具&#xff1a; 1.ollydbg 2.exeinfope 0x00 查壳 无壳就下一步 0x01 分析 随便输入个错的&#xff0c;出现了不知道哪国的语言。有个6&#xff0c;应该就是name的长度要大于6吧 OD载入&#xff0c;搜字符串。 00421BD7 |. 807D…

时间与日期处理

主要有以下类&#xff1a; NSDate -- 表示一个绝对的时间点NSTimeZone -- 时区信息NSLocale -- 本地化信息NSDateComponents -- 一个封装了具体年月日、时秒分、周、季度等的类NSCalendar -- 日历类&#xff0c;它提供了大部分的日期计算接口&#xff0c;并且允许您在NSDate和N…

160 - 45 Dope2112.2

环境&#xff1a; Windows xp sp3 工具 1.ollydbg 2.exeinfope 0x00 查壳 还是无壳的Delphi程序 0x01 分析 这次继续OD载入搜字符串&#xff0c;但是没找到错误信息的字符串。 又因为是Delphi程序&#xff0c;所以可以试一下这样&#xff1a; OD载入后还是搜字符串&…

NAT地址转换原理全攻略

NAT转换方式及原理 在NAT的应用中&#xff0c;可以仅需要转换内部地址&#xff08;就是“内部本地址”转换成“内部全局地址”&#xff09;&#xff0c;这是最典型的应用&#xff0c;如内部网络用户通过NAT转换共享上网&#xff1b;也可以是仅需要转换外部地址&#xff08;就是…

160 - 47 DueList.2

环境&#xff1a; Windows xp sp3 工具&#xff1a; Ollydbg exeinfope 0x00 查壳 无壳的程序 0x01 分析 运行后说需要keyfile&#xff0c;那就创建一个。 OD载入找找看需要的keyfile叫什么名字 00401000 > $ 6A 00 push 0x0 …

如何解决Visual Studio2012 与此版本的Windows不兼容

解决方案&#xff1a; http://www.microsoft.com/zh-CN/download/details.aspx?id36020 下载更新转载于:https://www.cnblogs.com/awodefeng/p/3373343.html

160 - 48 DueList.3

环境&#xff1a; Windows xp sp3 工具&#xff1a; Ollydbg exeinfope 0x00 查壳 无壳的程序 0x01 分析 应该就是选上某个或多个框后点Check就能成功的&#xff0c;那应该就是不同框对应不同的值咯。旁边还有个提示&#xff1a;建议使用资源编辑器。 直接OD载入&#x…

160 - 49 DueList.4

环境&#xff1a; Windows xp sp3 工具&#xff1a; ollydbg exeinfope 0x00 查壳 无壳的程序 0x01 分析 运行后随便输入点东西&#xff0c; OD载入&#xff1a; 00401127 > /6A 00 push 0x0 ; /lParam 0 00401129 …

MD5算法详解

0x00 前言 MD5是一种哈希算法&#xff0c;用来保证信息的完整性。 就一段信息对应一个哈希值&#xff0c;且不能通过哈希值推出这段信息&#xff0c;而且还需要保证不存在任意两段不相同的信息对应同一个哈希值。不过MD5算法算出来的值也就16个字节&#xff08;16*8128&#x…

基于XMPP协议的aSmack源码分析

在研究如何实现Pushing功能期间&#xff0c;收集了很多关于Pushing的资料&#xff0c;其中有一个androidnp开源项目用的人比较多&#xff0c;但是由于长时间没有什么人去维护&#xff0c;听说bug的几率挺多的&#xff0c;为了以后自己的产品稳定些&#xff0c;所以就打算自己研…

[Reverse] - 百度杯”CTF比赛 2017 二月场-CrackMe-1

环境&#xff1a;Windows XP 工具&#xff1a; IDA OD EXEINFOPE 0x00 查壳 0x01 分析 拖入OD&#xff0c;字符串查找看一看。 跟进去看就可以知道关键call了 0040196A . 48 dec eax 0040196B . 0F85 C4000000 jnz CrackMe1.00401A35 00401971 . …

【DeepLearning】Exercise:Learning color features with Sparse Autoencoders

Exercise:Learning color features with Sparse Autoencoders 习题链接&#xff1a;Exercise:Learning color features with Sparse Autoencoders sparseAutoencoderLinearCost.m function [cost,grad,features] sparseAutoencoderLinearCost(theta, visibleSize, hiddenSize,…

win7 64位系统下 PL/SQL无法连接的问题

第一步&#xff1a;下载oracle客户端 由于 PLSQL Developer 没有64位版本&#xff0c;所以在64位系统上运行该程链接64位Oracle时就会报错&#xff0c;笔者为这个问题纠结了好几天&#xff0c;后来通过请教Google 动手实践&#xff0c;终于搞定了这个问题。现在把笔者解决的过…

2016腾讯安全挑战赛第一轮-PC游戏方向

0x00 查壳 无壳的VC程序 0x01 测试 没有消息弹窗&#xff0c;尝试对函数下断点。 OD载入后&#xff0c;CtrlN查找函数&#xff0c;找到GetDlgItem 程序运行起来&#xff0c;等输入完后点击确定后程序断下。一路F8就来到这里 00401EED . E8 6A5B0000 call Tenc…

JavascriptDOM(三)

简介 今天学习第二天的知识,js和BOM对象,再接再厉,fighting~学习原则 脚踏实地的走好每一步,要想学好高级部分,基础知识必须扎实呀 掌握基本语法,完成小案例,写博客作总结,基本就是这个节奏,下面我们一起快速入门吧JavaScript快速入门 1. js简介 1.js基于对象和事件驱动的脚本语…

看雪 2016CrackMe 攻防大赛 - 1-Crack_Me-凉飕飕

环境&#xff1a; Windows xp 工具&#xff1a; IDA EXEINFOPE OD 0x00 查壳 EXEINFOPE查壳&#xff0c; 无壳 0x01 分析 if ( (unsigned __int16)wParam 0x40B ) // 成功{*(_OWORD *)v22 xmmword_41DB98;v25 0;v23 xmmword_41DBA8;v24 xmmword_41DBB8;memset_4039D0…

使用CSDN-markdown编辑器

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

C++ vector类详解

转自http://blog.csdn.net/whz_zb/article/details/6827999 vector简介 vector是STL中最常见的容器&#xff0c;它是一种顺序容器&#xff0c;支持随机访问。vector是一块连续分配的内存&#xff0c;从数据安排的角度来讲&#xff0c;和数组极其相似&#xff0c;不同的地方就是…

ViewPager的使用方法和实现过程

看图先&#xff1a; 页面中填充内容是随机关键词飞入和飞出动画效果&#xff0c;随后会更新&#xff0c;现在请先无视吧 首先是 导入jar包 下载地址&#xff1a; android-support-v4.jar 布局文件里添加viewPager布局 [html] view plaincopyprint?<android.support.v4.vi…

如何通过浏览器在所有响应内容中查找文本

使用浏览器的开发者工具查找响应文件的内容 ** Chrome ** 版本&#xff1a; 快捷键&#xff1a;CtrlShiftF 可以看到已经查找出来了 ** firefox ** 版本