|
|
LINUX的crackme的逆向小记(全文完)
C-FORGE用的是FLEXM LICENSE加密系统,这种加密系统我恰恰没研究过 |
|
|
谁有暴力破解的源码
本论坛编程版有一个字典生成程序,另,可到网上找找字典生成程序。 |
|
|
IDA Pro 4.90 边界线插件源代码
//楼主代码编译不成功主要是因为找不到空间植入代码,改函数FindSpaceForMyCode如下,加载成功 BYTE* FindSpaceForMyCode() { BYTE* ptr = (BYTE*)&debug - 16 * 1024; do { while (*ptr != 0xcc) ptr++; if (*(DWORD*)ptr == 0xcccc && *((DWORD*)ptr + 1) == 0) return ptr; } while (ptr++ < (BYTE*)&debug); return NULL; } |
|
|
|
|
|
泰格软件
泰格软件,按中音来译成英文,老虎软件?什么东东? |
|
|
|
|
|
谁知道WINDOWS XP下有那些动态调试工具
WINXP下面调试工具,用户级的有OLLYDBG,WINDBG,IDA,GDB FOR WIN版,内核级的有SOFTICE及国产的SYSER DEBUG。都可以在本论坛找到下载地址,你搜索一下。 |
|
|
|
|
|
|
|
|
谁有办法使用WINDBG在一台机器上调试内核代码呀
装虚拟机,虚拟一个双机环境。具体方法见下: 2bcK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4y4A6L8s2k6W2M7Y4y4@1M7W2)9J5k6i4g2X3K9h3g2K6i4K6u0W2L8%4u0Y4i4K6u0r3L8r3!0@1M7U0m8Q4x3V1k6%4K9h3&6V1j5X3N6Q4x3X3c8$3L8i4N6S2M7X3g2Q4x3X3g2Z5N6r3#2D9 以及: a82K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4S2N6r3y4Z5x3U0u0Q4x3X3g2F1k6i4c8Q4x3V1k6@1N6i4c8K6i4K6u0r3N6X3#2%4j5i4u0W2i4K6u0W2j5i4y4H3 |
|
|
是谁教我用壳SDK的?
蛋蛋要的就是这种效果!蛋蛋也不容易 |
|
|
谁知这是 <蔑壳>?
内存注册机使用的是调试API,而壳ANTI-DEBUG,内存注册机当然就不能正常工作了。 |
|
|
[求助]linux下的一个软件
话说得不清楚。你确定设置了路径为License file所在目录,软件动没动手脚,不调试过怎么知道,而没有软件下载地址,怎么个调试? |
|
|
|
|
|
[求助]为什么MSDN我安装不了?
你的可能是不完美盗版。用另一个版本的吧 |
|
|
writefile放出DLL有点问题,放出来的和原来自定义资源的好像不一样
00401369 |. 50 PUSH EAX ; /hResource 0040136A |. E8 9F000000 CALL <JMP.&KERNEL32.LockResource> ; \LockResource 0040136F |. 0BC0 OR EAX,EAX 00401371 |. 74 41 JE SHORT 11.004013B4 00401373 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX 00401376 |. 6A 00 PUSH 0 ; /hTemplateFile = NULL 00401378 |. 6A 00 PUSH 0 ; |Attributes = 0 0040137A |. 6A 01 PUSH 1 ; |Mode = CREATE_NEW 0040137C |. 6A 00 PUSH 0 ; |pSecurity = NULL 0040137E |. 6A 00 PUSH 0 ; |ShareMode = 0 00401380 |. 68 00000040 PUSH 40000000 ; |Access = GENERIC_WRITE 00401385 |. 68 28204000 PUSH 11.00402028 ; |FileName = "c:\windows\system32\isapc.dll" 0040138A |. E8 61000000 CALL <JMP.&KERNEL32.CreateFileA> ; \CreateFileA 0040138F |. 50 PUSH EAX 00401390 |. 8F45 E8 POP DWORD PTR SS:[EBP-18] 00401393 |. 6A 00 PUSH 0 ; /pOverlapped = NULL 00401395 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14] ; | 00401398 |. 50 PUSH EAX ; |pBytesWritten 00401399 |. FF75 F4 PUSH DWORD PTR SS:[EBP-C] ; |nBytesToWrite 0040139C |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] ; |//这一句出错,正确的应该是mov eax, [ebp-10] 0040139F |. 50 PUSH EAX ; |Buffer = 0012FFA8 004013A0 |. FF75 E8 PUSH DWORD PTR SS:[EBP-18] ; |hFile 004013A3 |. E8 72000000 CALL <JMP.&KERNEL32.WriteFile> ; \WriteFile 004013A8 |. 0BC0 OR EAX,EAX 004013AA |. 74 08 JE SHORT 11.004013B4 |
|
|
[求助]关于catch22上自杀代码在GCC下的编译问题.
用MINGW不能自动删除是因为编译器对于函数地址解释与VC不同的原因: 出错代码如下: local.fnWaitForSingleObject = (FARPROC)WaitForSingleObject; local.fnCloseHandle = (FARPROC)CloseHandle; local.fnDeleteFile = (FARPROC)DeleteFile; local.fnSleep = (FARPROC)Sleep; local.fnExitProcess = (FARPROC)ExitProcess; local.fnRemoveDirectory = (FARPROC)RemoveDirectory; local.fnGetLastError = (FARPROC)GetLastError; WaitForSingleObject得到的并不是函数地址,而是间接调用地址,对应的反汇编代码如下: 401160: c7 85 90 fb ff ff c0 movl $0x4013c0,0xfffffb90(%ebp) 004013c0 <_WaitForSingleObject@8>: 4013c0: ff 25 d8 40 40 00 jmp *0x4040d8 4013c6: 90 nop 4013c7: 90 nop 当在远程代码是调用local.fnWaitForSingleObject等函数的时候,也就是调用$0x4013C0这个地址,而这个地址在远程代码所在进程中不是WaitForSingleObject函数的调用。 当用VC编译的时候,编译器传入的是WaitForSingleObject直接地址,这个直接地址在整个NT操作系统所有的进程空间中的地址都是一样的,不用考虑DLL重定位后的地址不同这个问题。 所以正确的VC和GCC编译器通用代码应该是传递WaitForSingleObject等函数的直接地址,如下:
HINSTANCE hKernel;
hKernel = LoadLibrary("kernel32.dll");
local.fnWaitForSingleObject = GetProcAddress( hKernel, "WaitForSingleObject");
// 其它的函数...
FreeLibrary(hKernel);
附修改后的代码及DEV-CPP工程文件: |
|
|
[原创][下载]PEEK 0.6
好,以前我都是用strings命令,只是不支持中文.现在终于有中文的了 |
|
|
[求助]关于catch22上自杀代码在GCC下的编译问题.
#pragma pack(push, 1) 这里有详细的解释:815K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2K6k6r3&6Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6D9K9h3u0J5j5i4u0&6i4K6u0r3k6r3g2X3j5i4g2D9N6q4)9J5k6h3q4K6M7q4)9K6c8Y4g2J5L8q4)9K6c8q4)9J5c8X3I4A6j5Y4u0S2M7Y4W2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3N6X3y4D9j5h3&6Y4i4K6u0r3K9s2c8E0L8q4)9J5c8W2)9#2k6Y4m8J5k6h3c8A6M7W2)9#2k6Y4m8S2j5$3E0Q4x3X3g2S2M7%4l9`. #define CODESIZE 0x200 定义复制到远程线程中代码长度 #define FUNC_ADDR(func) (PVOID)(*(DWORD *)((BYTE *)func + 1) + (DWORD)((BYTE *)func + 5)) 这个宏表示得到近CALL或者近跳转地址,它们指令长度都是5字节,例如: DEBUG版生成如下形式代码, .text:004110D7 sub_4110D7 proc near ; CODE XREF: sub_411280+90p .text:004110D7 ; sub_411280+110p ... .text:004110D7 jmp sub_411880 .text:004110D7 sub_4110D7 endp FUNC_ADDR(sub_4110D7)宏后就得到sub_411880这个地址 |
|
|
[求助]关于FI的设计思路
特征匹配,一般来说选的是程序入口处的代码。当然如果深入点,加上虚拟机运行个1K指令再来了行为判断就更好了。哈哈 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
勋章
兑换勋章
证书
证书查询 >
能力值