|
[求助]谁知道哪有好用的vc++ 下载啊
宅到你这种程度也不容易了。 你是公众网,就到迅雷上搜索下载吧,应该有不少。 要是教育网,最方便还是到教育网内部的FTP找,又快又好。 不过VC6真是有点。。。太。。。旧了,对C++标准支持也不太好。 如果不是为了用MFC,你何不试试Codelite + MinGW + wxWidget,很棒的工具组合,而且跨平台。 |
|
[讨论]这个加密算法安全度究竟如何?
我来整理一下: int xxx(char * sn,int sn_len, int a3) { char result[20]={0x00}; int shift,i,value,hex; shift=0; value=0; hex=0; i=20;//0x14 while (i) { if (shift<=8) { do { hex=sn[--sn_len]; if (hex >= 'A') hex = hex - 'A' + 0x0A; else hex = hex - '0'; hex=hex<<shift; shift +=5; value |= hex; } while (shift<8); } --i; result[i]=(char)value; value >>= 8; shift -= 8; } return 1; } 可以明确地说,这个算法甚至根本不能称之为加密。 而且确实,这段代码,是不安全的。 |
|
询问修改OD子窗口大小的方法[如何永久指定程序打开后的窗口大小]
你自己查一下CreateWindowEx的手册,把每个参数搞清楚,然后按自己的意思修改。 如果连API手册都不会看,那真得狠狠补一补基础了。 |
|
|
|
[求助]AdvancedOlly.dll问题求助?
如果要nop掉的是一个call指令,如何保持堆栈平衡呢? 只要按ENTER进入被call的函数,看一下函数的返回指令,如果是retn,就直接用Nop替换;如果是retn XXX,就把call替换成为add esp, XXX 就这样。具体请查阅指令手册关于retn指令的说明。 |
|
[求助]vc写个最简单的c2.exe(控制台),使用OD打开c2.exe,竟然很多CALL c2.00411195,INT3这样的命令
int3的问题shellwolf说得很清楚了。 c2.004133E0,这种格式很自然,不知道你哪里不懂? 如果不想显示c2,可以在 选项->调试选项->反汇编,将“显示本地模块名称”一项关闭。 |
|
[求助]OllyDBG的标题汉化问题[附带目前网上很少的非标汉化工具破解版]
1.指令的长度,在OD中反汇编窗口中第二列可以查看。如lea edx,[esi+0x1808]的机器码是8D96 08180000,显然它是6个字节。 实际上有些指令不查看也知道,因为它们是十分常见的,由于见得多了,不记也记住了,比如寄存器入栈、出栈都是单字节指令,retn指令是c3,int3指令是cc,单字节nop是90,等等。还有short jmp是双字节指令,第一字节是操作码,第二字节是转移偏移量。 比如给一个寄存器直接赋值的指令,如我修改的mov edx,XXXXXXXX,我知道它是5个字节的指令的。如果你不知道自己要修改的指令的长度,可以在OD里试一下,比如随便找一个地址。 如果由于指令长度的问题,无法通过只修改一条指令就达到目的,这种情况是很常见的。修改的方法就是先找一块空闲的地址空间,比如代码最后的大块的0的位置,把要添加的程序写好。然后到要修改的代码那里,用一条jmp指令跳到我们刚写的代码。由于一条near jmp指令是5个字节,而我们修改的那条指令长度不够,那么这条jmp指令就会破坏掉其后的其它指令,所以我们事先要先把这几条指令记下来。 修改成jmp后,对比一下记录下来的原来的程序,找到被jmp破坏的指令,补在我们添加的程序之后,最后再一条jmp指令回到正常的程序中即可。这种方法是很常用的很基础的一种打补丁的方法。 2.程序中所有出现绝对地址的地方,包括代码和数据,理论上都需要重定位。但是对EXE文件,操作系统的加载器正常情况下是可以保证将程序加载到默认基址上的,所以EXE文件实际上是不需要重定位的。如果对连接器和加载器的工作原理不太了解的话,可以先不用理会它。实际的逆向中,需要处理重定位的都是跟DLL文件有关的,如脱壳,如给DLL增加功能等。 对所涉及的代码重定位,只要在程序的重定位表中增加相应的内容就可以了。 |
|
|
|
|
|
[求助]逆向基础知识
业余爱好也必须把最基础的东西搞明白。况且“指令集”、“寄存器集”和“汇编程序语法”确实是最基础的东西,根本不是高深的。 中山大学的套教程我记得是16位的。 你要把16位的学懂了,32位的很快就能掌握的。所以,有时间的话,可以从这套教程进行学习,不会是无用的。 |
|
[求助]OllyDBG的标题汉化问题[附带目前网上很少的非标汉化工具破解版]
这样吧,我详细地说一下。看来你逆向的基础差了一些。CreateWindow和CreateWindowEx是两个API,而且二者都有A和W的版本。我那么写以为你知道这些呢。 我就随便修改一下,演示一下其中的方法吧。 用OD载入OD,我们把第一个做调试器的进程叫进程1,把被调试的进程叫进程2,以及区别。 载入后,下断点: bp CreateWindowExA,然后F9运行,马上中断,看堆栈: 0013F580 00435E68 /CALL 到 CreateWindowExA [COLOR="Red"]来自 OllyICE.00435E63[/COLOR] 0013F584 00000010 |ExtStyle = WS_EX_ACCEPTFILES 0013F588 004B7218 |Class = "pediy06" 0013F58C 004B71EE |WindowName = "OllyICE" 0013F590 02CF0000 |Style = WS_OVERLAPPED|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN|WS_SYSMENU|WS_THICKFRAME|WS_CAPTION 0013F594 00000004 |X = 4 0013F598 0000000F |Y = F (15.) 0013F59C 00000280 |Width = 280 (640.) 0013F5A0 000001E0 |Height = 1E0 (480.) 0013F5A4 00000000 |hParent = NULL 0013F5A8 00000000 |hMenu = NULL 0013F5AC 00400000 |hInst = 00400000 0013F5B0 00000000 \lParam = NULL 0013F5B4 00000000 0013F5B8 004B00C4 OllyICE.004B00C4 我们用鼠标选中“0013F580 00435E68 /CALL 到 CreateWindowExA 来自 OllyICE.00435E63”这一行,回车,反汇编窗口来到地址00435e63这里,往上翻一下,就到了创建窗口的地方,代码是这样的: 00435E31 > \8B0D 783B4D00 MOV ECX, DWORD PTR DS:[4D3B78] ; OllyICE.00400000 00435E37 . 6A 00 PUSH 0 ; /lParam = NULL 00435E39 . 51 PUSH ECX ; |hInst => 00400000 00435E3A . 6A 00 PUSH 0 ; |hMenu = NULL 00435E3C . 6A 00 PUSH 0 ; |hParent = NULL 00435E3E . 8B45 E8 MOV EAX, DWORD PTR SS:[EBP-18] ; | 00435E41 . 50 PUSH EAX ; |Height 00435E42 . 8B55 EC MOV EDX, DWORD PTR SS:[EBP-14] ; | 00435E45 . 52 PUSH EDX ; |Width 00435E46 . 8D96 08180000 LEA [COLOR="Red"]EDX[/COLOR], DWORD PTR DS:[ESI+1808] ; | 00435E4C . 8B4D F0 MOV ECX, DWORD PTR SS:[EBP-10] ; | 00435E4F . 51 PUSH ECX ; |Y 00435E50 . 8D8E 32180000 LEA ECX, DWORD PTR DS:[ESI+1832] ; | 00435E56 . 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-C] ; | 00435E59 . 50 PUSH EAX ; |X 00435E5A . 68 0000CF02 PUSH 2CF0000 ; |Style = WS_OVERLAPPED|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN|WS_SYSMENU|WS_THICKFRAME|WS_CAPTION 00435E5F . 52 PUSH [COLOR="Red"]EDX[/COLOR] ; |[COLOR="Red"]WindowName[/COLOR] 00435E60 . 51 PUSH ECX ; |Class 00435E61 . 6A 10 PUSH 10 ; |ExtStyle = WS_EX_ACCEPTFILES 00435E63 . E8 34950700 CALL <JMP.&USER32.CreateWindowExA> ; \CreateWindowExA 00435E68 . A3 7C3B4D00 MOV DWORD PTR DS:[4D3B7C], EAX ; 这里就是返回地址 看一下OD分析出的注释,WindowName参数是放在edx中再进行入栈的,再往上看到给edx赋值的指令是lea edx, [esi+0x1808] BCB使用WOL类库,ESI就是form的对象的指针,偏移0x1808处就是它的标题,但长度有限。 很幸运,“lea edx, [esi+0x1808]”这条指令6个字节长,足够我们写一条mov指令了。 现在我们寻找一块空闲的内存,通常只读的字符串可以直接在.text节的末尾找。我找到如下地址: 004AF7A0 > \83F8 76 CMP EAX, 76 004AF7A3 . 75 0A JNZ SHORT OllyICE.004AF7AF 004AF7A5 . BB 14000000 MOV EBX, 14 004AF7AA >^ E9 A239F7FF JMP OllyICE.00423151 004AF7AF > 833D 44274E00 01 CMP DWORD PTR DS:[4E2744], 1 004AF7B6 .^ E9 7B0CF7FF JMP OllyICE.00420436 004AF7BB 00 DB 00 004AF7BC 00 DB 00 004AF7BD 00 DB 00 004AF7BE 00 DB 00 004AF7BF 00 DB 00 004AF7C0 00 DB 00 004AF7C1 00 DB 00 004AF7C2 00 DB 00 004AF7C3 00 DB 00 004AF7C4 00 DB 00 004AF7C5 00 DB 00 004AF7C6 00 DB 00 004AF7C7 00 DB 00 004AF7C8 00 DB 00 004AF7C9 00 DB 00 004AF7CA 00 DB 00 004AF7CB 00 DB 00 004AF7CC 00 DB 00 004AF7CD 00 DB 00 004AF7CE 00 DB 00 004AF7CF 00 DB 00 004AF7D0 00 DB 00 004AF7D1 00 DB 00 004AF7D2 00 DB 00 可以看到这里是有效代码的最后了。我就在4af7c0这里写我自己的窗口标题,想写多长都行,只要别超出.text节的范围就行。如图: 然后我回到00435E46处,修改指令为:mov edx,0x4af7c0,它现在变成这样: 注:严格说来,这个地址需要重定位,但EXE文件通常不用重定位的。 00435E31 > \8B0D 783B4D00 MOV ECX, DWORD PTR DS:[4D3B78] ; OllyICE.00400000 00435E37 . 6A 00 PUSH 0 ; /lParam = NULL 00435E39 . 51 PUSH ECX ; |hInst => 00400000 00435E3A . 6A 00 PUSH 0 ; |hMenu = NULL 00435E3C . 6A 00 PUSH 0 ; |hParent = NULL 00435E3E . 8B45 E8 MOV EAX, DWORD PTR SS:[EBP-18] ; | 00435E41 . 50 PUSH EAX ; |Height 00435E42 . 8B55 EC MOV EDX, DWORD PTR SS:[EBP-14] ; | 00435E45 . 52 PUSH EDX ; |Width [COLOR="Red"]00435E46 BA C0F74A00 MOV EDX, OllyICE.004AF7C0 00435E4B 90 NOP[/COLOR] 00435E4C . 8B4D F0 MOV ECX, DWORD PTR SS:[EBP-10] ; | 00435E4F . 51 PUSH ECX ; |Y 00435E50 . 8D8E 32180000 LEA ECX, DWORD PTR DS:[ESI+1832] ; | 00435E56 . 8B45 F4 MOV EAX, DWORD PTR SS:[EBP-C] ; | 00435E59 . 50 PUSH EAX ; |X 00435E5A . 68 0000CF02 PUSH 2CF0000 ; |Style = WS_OVERLAPPED|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN|WS_SYSMENU|WS_THICKFRAME|WS_CAPTION 00435E5F . 52 PUSH EDX ; |WindowName 00435E60 . 51 PUSH ECX ; |Class 00435E61 . 6A 10 PUSH 10 ; |ExtStyle = WS_EX_ACCEPTFILES 00435E63 . E8 34950700 CALL <JMP.&USER32.CreateWindowExA> ; \CreateWindowExA 00435E68 . A3 7C3B4D00 MOV DWORD PTR DS:[4D3B7C], EAX ; 这里就是返回地址 右键->复制到可执行文件->全部修改->全部保存;右键->保存文件。 现在我们来运行一下修改后的myolly.exe看看: |
|
keymake生成的内存注册机问题
你是不是在中断那里设置“保存以下信息为注册码”,在主程序里也设置了注册的方式?这样的话就会重复两次了。 |
|
[求助]想学软件破解,却一点头绪也没有,能根据例子指导一下吗?
1.给出的下载连接不正确。 2.要明白破解的原理和学习的路线,而汇编一点也不懂,那是绝对不可能的。 3.真对逆向感兴趣,就闭关先学习编程,至少是编程的基础,汇编的或C语言的都成,总之必须先对软件的基本概念一清二楚。 4.论实例讲解,看雪网站有解密教学http://www.pediy.com/tutorial.htm,用专为教学设计的CrackMe来讲解,绝对比用实际的软件更能讲清楚原理。 5.只是因为有软件需要“破解”才想要学“破解”,这种学习动机不正确,学习也不会长久,效果不会好。 |
|
[求助]OllyDBG的标题汉化问题[附带目前网上很少的非标汉化工具破解版]
汉化和调试技术不分家。 从数据入手找不到突破点,就从代码入手。 窗口标题的设定,无非是CreateWindow(Ex)()、SetWindowText()、SendMessage(hwnd,WM_SETTEXT,...)等,在适当的地方下断点,就可以找到相应的代码,从代码中分析出数据(字符串)的地址。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值