re
文章平均质量分 60
Sw@9
废物
展开
-
调试学习【10】
逆向后的Delphi特色破解练习演示程序:Teksched查看PEiD可以查到这是一个Delphi程序。我们之间载入它:那么根据以往的经验,首先的需要搜索字符串:看到一个关键的字符串,直接跟进。我们现在想的是:如何操作才能是程序运行到这个位置。然而经过观察,没有哪个指令是可以直接跳转到这个位置的。向上看,可以观察到Delphi程序的一个特色:利用PUSH和RETN来做到跳转的目的相当于jmp 004A5841。现在来从上往下看代码函数入口处:各种验证以及跳转我们最终的原创 2021-06-10 19:41:52 · 132 阅读 · 0 评论 -
调试学习【9】
目录原创 2021-06-02 17:11:11 · 92 阅读 · 0 评论 -
调试学习【8】
目录爆破,是最初级的破解方案,不到万不得已,我们不直接修改JNZ通关。演示程序:MrBills.exe打开之后是一个需要注册的程序在这里我们随便输入一个东西,跳出窗口可以以这个为突破口,来搜索相关字符串找到突破口而影响jnz的是上面的test(与运算)因此,如果al为0则未注册,al为1或非0则已注册jnz跳转但是哪有影响了al呢?看到上面存在一个函数CALL,而函数的返回值有存在eax中,进而影响al,因此需要进入这个CALL。在这里设置一个断点到这里,随便输入一个东西原创 2021-06-01 20:35:58 · 301 阅读 · 0 评论 -
调试学习【7】
目录破解练习两种破解方法1、打补丁的方式破解练习演示程序:pcsurgeon.exe打开跳出一个NAG,而往往破解的入口点就是NAG一打开就说我没有注册,而且还要20dollar进入主界面可以看到这是一个系统探测程序两种破解方法1、打补丁的方式首先观察到上面在程序帮助上面也有这边是输入注册码开搞,打开od载入,跑起来,就以unregistered为切入点,查找字符串跟容易就可以找到对应的位置:...原创 2021-05-31 20:20:53 · 79 阅读 · 0 评论 -
调试学习【6】
软件破解软件破解破解的思路OD的两种断点操作软件破解演示程序:VisualSite Designer该软件限制使用次数并且在关闭的时候弹出广告破解的思路仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需要你掏腰包来获得更多的功能或者解除限制。那么我们就可以逆向的来思考,如果该程序成功的注册后,那么程序的行为必将发生变化,如NAG去除了,如功能限制没有了等等。也就是说,程序的代码的走法也会跟未注册的时候截然不同。因为程序的行为改变了,那么决定它所有行为的代原创 2021-05-23 20:43:04 · 84 阅读 · 0 评论 -
调试学习【5】
调试学习5原创 2021-05-20 20:40:53 · 105 阅读 · 0 评论 -
调试学习【4】
调试学习【4】去除NAG窗口演示程序:RegisterMe.exe方法一和二方法三PE结构方法四去除NAG窗口nag本意是烦人的意思,nag窗口是软件设计者用来时不时提醒用户购买正版的警示窗口。软件设计者可能认为当用户忍受不了试用版中的这些烦人的窗口时,就会考虑购买正版。但在天朝,我们不允许有这样欺负用户的软件[doge]一般在启动或退出的时候弹出来,或者在程序运行的某个时刻突然蹦出来吓你一跳,恶心用户。一般情况下,一个注册后的软件,他是不会弹出NAG窗口的。所以,一般在程序启动的时候,他会原创 2021-05-16 20:23:27 · 224 阅读 · 0 评论 -
调试学习【3】
关于寄存器寄存器就好比是CPU身上的口袋,方便CPU随时从里边拿出需要的东西来使用。现在这个程序中我们涉及到九个寄存器:EAX:扩展累加寄存器EBX:扩展基址寄存器ECX:扩展计数寄存器EDX:扩展数据寄存器ESI:扩展来源寄存器EDI:扩展目标寄存器EBP:扩展基址指针寄存器ESP:扩展堆栈指针寄存器EIP:扩展指令指针寄存器这些寄存器的大小是32位(4个字节),他们可以容纳数据从0-FFFFFFFF(无符号数),除了以下三个寄存器,其他我们都可以随意使用:EBP:主要是用于栈和原创 2021-04-29 08:46:30 · 133 阅读 · 0 评论 -
调试学习【2】
TraceMe序号验证程序流程图加载目标文件调试设置OD中断在程序的入口点。名词注释:(1)System breakpoint:系统断点,OD用CreateProcessA加载DEBUG_ONLY_THIS_PROCESS参数执行,程序运行之后会触发一个INT13,在系统空间里。(2)Entry point of main module:主模块的入口点,即文件的入口点。(3)WinMain:程序的WinMain()函数入口点·-------------------------------原创 2021-04-23 16:09:06 · 308 阅读 · 5 评论 -
调试学习【1】
OD和IDA ProOD和IDA Pro分别是调试逆向的倚天剑和屠龙刀。虽然二者都兼容动态调试和静态的调试方式,但是就动态调试而言,OD更为灵活和强大,而静态调试工具的王者则为功能极为强大的IDA Pro。ODF2 下断点,也就是指定断点的地址F3 加载一个可执行程序,进行调试分析F4 程序执行到光标处F5 缩小、还愿当前窗口F7单步步入F8单步步过F9直接运行程序,遇到断点处,程序暂停Ctrl+F2 重新运行程序到起始处,一般用于重新调试程序Ctrl+F9 执行到函数返回处,用原创 2021-04-20 20:22:09 · 163 阅读 · 1 评论 -
re刷题【6】
logmein看源码:输入的s不能满足一下两种条件,可以根据第二个条件来写脚本:v7 = 'harambe'v8 = ':\"AL_RT^L*.?+6/46'flag = ""for i in range(len(v8)): flag += chr(ord(v7[i % 7]) ^ ord(v8[i]))print(flag)RC3-2016-XORISGUD...原创 2021-04-18 17:08:03 · 75 阅读 · 0 评论 -
re刷题【5】
python-tradepy文件,反编译:import base64def encode(message): s = '' for i in message: x = ord(i) ^ 32 x = x + 16 s += chr(x) return base64.b64encode(s)correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'flag = ''print 'Input原创 2021-04-08 20:47:18 · 128 阅读 · 0 评论 -
re学习记录从入门到入狱【9】
分支语句一、 if else语句单if语句此处的表达式为判断,例如:int a = 1;int b = 2;if (a>b) //如果a>b{ print("a>b"); //输出a大于b}if(表达式){ 语句;}if、else语句那么我们如上语句,还要有一个不满足a>b的条件,就用到if/else,如下:int a = 1;int b = 2;if (a>b) //如果a>b{ print("a>b"); //输出原创 2021-04-06 19:48:20 · 101 阅读 · 0 评论 -
re学习记录从入门到入狱【8】
运算符与表达式1、什么是运算符,什么是表达式?表达式是由一系列运算符(operators)和操作数(operands)组成的例如:int a,b,c;c = a + b;c = a * b;c = a / b;c = a - b;a == b;a = b;+ - * / == = 一系列符号就是运算符上面的 a+b 、a/b等,就是表达式。表达式就运算符和操作数(变量,立即数等)组成的一系列完整语句表达式运算结果若我们的操作数类型并不相同,比如 c = a + b,此原创 2021-04-01 20:51:46 · 59 阅读 · 0 评论 -
re学习记录从入门到入狱【7】
数据类型1. 整数类型变量就是存储数据的一个容器。那么存储数据是有宽度的,决定存储数据宽度的就是数据类型了。就好像做个加法,反馈的内容,存储什么类型,也是由数据类型决定。常见的整数数据类型如下:int在十六位计算机中是2字节,在32以上的计算机中是4字节。数据溢出:抛弃高位除了告诉编译器,存储数据的宽度,还告诉了存储数据的格式如:char a = 1;(0000 0001)因为char是1字节,1字节=8位,其余补0那么:char a = -1;(1111 1111)负数补原创 2021-03-28 20:22:38 · 85 阅读 · 0 评论 -
re的学习记录从入门到入狱【6】
函数嵌套调用原创 2021-03-28 10:30:20 · 101 阅读 · 0 评论 -
re刷题【4】
Java逆向解密java逆向,使用jd-jui反编译查看代码:很显然:输入的字符串经过循环变换之后与某list比较,正确为flag这里给了KEY编写脚本:key = [180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65 ]flag = ""for i in range(0,len(key)): flag += chr(key[i] - 64 ^ 0x20)原创 2021-03-19 15:34:31 · 71 阅读 · 0 评论 -
re刷题【3】
xor无壳,用ida打开,F5看伪代码。输入的v6的长度为33,也就是flag的长度。从第二项开始,每一项都与前一项异或之后得到的v6再和v3比较,相同得Success。现在查看v3是什么给了一堆字符串,将他们导出正好为33个根据题意编写脚本s = [102,10,107,12,119, 38, 79, 46, 64, 17, 120, 13, 90, 59, 85, 17, 112, 25, 70, 31, 118, 34, 77, 35, 68原创 2021-03-16 20:22:00 · 104 阅读 · 0 评论 -
re刷题【2】
一、内涵的软件扔进ida看字符串,得到:DBAPP{49d3c93df25caad81232130f3d2ebfad}然而这就是flagflag{49d3c93df25caad81232130f3d2ebfad}二、新年快乐看为伪代码意思为:如果v4跟输入的字符串相等时,输出this is true flag!而v4 = HappyNewYear!因此flag{HappyNewYear!}三、[BJDCTF 2nd]guessgameida查看字符串BJD{S1mple_原创 2021-03-14 16:50:35 · 93 阅读 · 0 评论 -
re刷题记录【1】
一、不一样的flag用IDA打开搜索字符串,可以发现两个关键信息:第一个看不出来什么,第二个意思是我的路线就是flag看伪代码这一行的意思是:XX=“1”则exit,xx=“#”则puts(xx)根据第一条信息:*11110100001010000101111#可以得出,第一条信息在主函数中也参与了使用,所以我们再走迷宫。画出路线从*开始,到#结束,我们的路线就是flag*11110100001010000101111#flag应该是222441144222二、eas原创 2021-03-14 14:59:09 · 99 阅读 · 0 评论 -
re的学习记录从入门到入狱【5】
C语言的变量一、变量在C语言里,我们存储数据就要把数据存到变量里。变量,就是一个存储数据的容器。声明变量变量类型 变量名;变量类型和函数类型相似,用来说明存储数据的宽度是多大。int 整数型 4字节char 字节型 1字节变量命名规则1、只能以字母、数字、下划线组成,第一位必须是字母或者下划线2、区分大小写3、不可使用关键字二、变量代码的学习1、int a;void main(){ a = 1; return;}2、void main(){ int a;原创 2021-03-14 09:31:58 · 60 阅读 · 0 评论 -
re的学习记录从入门到入狱【4】
C语言基础原创 2021-03-10 20:29:28 · 171 阅读 · 0 评论 -
re的学习记录从入门到入狱【3】
一、JCC标志位1、CFCF 进位标志位,算术操作最高位结果进位(加法)或借位(减法) CF=1。EAX清零,CF=0,让FF+1,产生进位。2、PFPF 奇偶标志位,结果中的低八位1的个数为偶数 PF=1al=FE,二进制也就是1111 1110,+1变成1111 1111,这样就是偶数,PF=1。低八位al,转成二进制,1的个数为偶数则为1。3、AF辅助进位标志,算数操作在结果D3→D4位发生进位或借位时 AF=14、zfZF 零标志位:操作的结果等于0时 ZF=1...原创 2021-02-05 10:31:19 · 106 阅读 · 0 评论 -
re的学习记录从入门到入狱【2】
一、通用寄存器计算机可以将数据存在:CPU、内存、硬盘寄存器就是CPU中用来存储数据的地方8个32位通用寄存器EAX:返回值存放 EBX:寻址存放基地址ECX:计数器EDX:余数存放ESP、EBP:栈顶指针、EBP指向系统栈最上面一个栈帧的底部ESI、EDI:源索引寄存器,指向源串 / 目标串特殊EIP:CPU即将执行指令地址,无法作为他用寄存器之间的关系寄存器的修改操作mov指令传送赋值mov 目标地址,源地址二、内存与内存地址内存虽然CPU可以存储数据,但是有原创 2021-01-31 10:18:17 · 212 阅读 · 0 评论 -
re的学习记录从入门到入狱【1】
一、进制计算机只认识二进制,也就是0和1。计算机中存储的任何文件,接收的任何指令都是由0和1组成的。1、进制的定义八进制:八个符号组成,0、1、2、3、4、5、6、7,逢8进1十六进制:十六个符号组成,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢16进12. 进制书写方式列:0 1 2 3 4 5 6 7 8 9 A B C D E F这是十六进制的十六个数,如果想继续写15以后的数,就得进位,就好像9+1 = 10。八进制没有八,十六进制没有十六,先用00占位,原创 2021-01-21 13:34:35 · 212 阅读 · 0 评论