<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[辰星的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SC_king</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SC_king]]></copyright><item><title><![CDATA[SUCTF Re]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/113772253</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/113772253</guid><author>SC_king</author><pubDate>Tue, 09 Feb 2021 16:27:01 +0800</pubDate><description><![CDATA[1.SignIn

一入眼，熟悉的大数，RSA加密。因为n位数十分小，因此可以直接分解n，如下。

import gmpy2
import libnum

e = 65537
p = 366669102002966856876605669837014229419
q = 282164587459512124844245113950593348271
n = 1034610359008169141213901012990490444139504051737121704341616865398781609845]]></description><category></category></item><item><title><![CDATA[[2019红帽杯] Reverse复现]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/112788832</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/112788832</guid><author>SC_king</author><pubDate>Mon, 18 Jan 2021 17:20:22 +0800</pubDate><description><![CDATA[1.EasyRe
wp

ELF文件结构：主要考察对ELF各Section的作用熟悉程度。

根据在字符串追踪引用至该函数中。该函数可以得到一个一个提示，已经一个无用的网站。提示信息大意为前4个字节为flag，后面有用。

其实到这步的时候很容易卡在，我动调半天没发现什么，最好看其他师傅WP基本思路都是从.data段的定义的变量入手，追踪到关键处。
其实这个思路并不明显，我自己思考了一下似乎也没有什么好的想法，也只有追踪可以全局变量这一个了，当然如果你足够有毅力也可以注意查看每一个函数。
最终关键函数在.f]]></description><category></category></item><item><title><![CDATA[使用aheadllib进行dll劫持时遇见的一个巨坑]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/109364399</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/109364399</guid><author>SC_king</author><pubDate>Thu, 29 Oct 2020 17:11:35 +0800</pubDate><description><![CDATA[同过dll劫持生成的dll文件存在一个巨大的坑，系统dll路径加载有错误！

64位Windows系统下，GetSystemDirectory函数默认加载的系统dll路径时，默认加载的是C:\Windows\System32这个路径，而这个路径下的dll全是64位的，如果是使用32位dll进行劫持的话简直要命，查半天资料才知道这个函数路径加载有问题。
最稳的办法就是手动写准确的路径。


...]]></description><category></category></item><item><title><![CDATA[CM3——又一个CM]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/108984850</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/108984850</guid><author>SC_king</author><pubDate>Fri, 09 Oct 2020 20:05:42 +0800</pubDate><description><![CDATA[难度:我无法判断

思路:

看到这个界面的思路，其实已经很明确了。首先追下读取文本框内容比较的关键点，看下是否可以直接取出注册码；如果不行，只能追按钮事件的函数，看看具体点。
后面发现有反调试，以及文件md5校验，全部过之即可。
开始：
过反调和文件校验：
思路如下，可以在MessageBox下断，回追关键点；也可以查看堆栈调用，从退出函数会追，最终都会殊途同归，不过这里既然有MessageBox大概率会比追退出函数便捷，经过层层的回追，发现反调试是在易语言的消息分发函数中实现的，于是下断往里追，改三个.]]></description><category></category></item><item><title><![CDATA[CM2——52上的一个名为“沙雕CM“]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/108982624</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/108982624</guid><author>SC_king</author><pubDate>Fri, 09 Oct 2020 17:32:47 +0800</pubDate><description><![CDATA[破解要求：


题主表明无花无壳无暗桩

这个其实按照要求，其实比较好破解，直接push窗体，一会的事情。不过如果要逆算法就得花点时间，算法的追踪直接在易语言事件处理函数出下断，追踪即可。
push窗体破解如下:


算法逆向过了。

...]]></description><category></category></item><item><title><![CDATA[(1)52上一个简单的CM]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/108975576</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/108975576</guid><author>SC_king</author><pubDate>Fri, 09 Oct 2020 11:32:44 +0800</pubDate><description><![CDATA[难度:简单


看程序，结构应该是非常简单的。读入文本框内容并且与key进行比较，尚不清楚key处是否加密比较，试试看。
有个UPX壳，直接带壳分析吧。


易语言程序特征。
直接定位key比较处，下断。



...]]></description><category></category></item><item><title><![CDATA[buuoj pyre wp]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/108941573</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/108941573</guid><author>SC_king</author><pubDate>Tue, 06 Oct 2020 17:43:54 +0800</pubDate><description><![CDATA[给了给pyc文件，反编译之,源码如下:
print 'Welcome to Re World!'
print 'Your input1 is your flag~'
l = len(input1)
for i in range(l):
    num = ((input1[i] + i) % 128 + 128) % 128
    code += num

for i in range(l - 1):
    code[i] = code[i] ^ code[i + 1]

print code
code]]></description><category></category></item><item><title><![CDATA[attachment WP]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/108941309</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/108941309</guid><author>SC_king</author><pubDate>Tue, 06 Oct 2020 17:18:39 +0800</pubDate><description><![CDATA[给了个Windows桌面程序，用win32写的。这个题目异常简单，进行字符串搜索就会发生关键线索。只需要简单分析下getflag按钮弹出的Dialog消息处理函数。
函数如下：

flag:BJD{1999902069a45792d233ac}

]]></description><category></category></item><item><title><![CDATA[CrackRTF WP]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/108940864</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/108940864</guid><author>SC_king</author><pubDate>Tue, 06 Oct 2020 17:03:31 +0800</pubDate><description><![CDATA[一道有点心思的Re题目，我也被最后一步坑了。
程序总体流程：
获取第一次输入，并且输入只能是6位的数字，并拼接上"@DBApp"调用win32API进行加密，第一次选择的是sha1加密，加密完成后与一个hash值进行比较，注意这给是值比较不是字符串比较，因此写脚本的时候要注意一下大小写。

第二次，故技重施，不同的是这次的输入只是将长度限制位6个字符而不仅限于数字，并且拼接上sha1爆破出来的结果，随后再次调用WIN32 api进行加密，这次是进行md5加密。不过因为，这次由于第二次输入条件的宽松限制，md]]></description><category></category></item><item><title><![CDATA[C/C++bug记录]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/106679678</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/106679678</guid><author>SC_king</author><pubDate>Fri, 19 Jun 2020 17:00:24 +0800</pubDate><description><![CDATA[C

环境：Ubuntu 16.04
编译器：GCC

goto语句标签之间的区域不能存在声明语句
用C语言在Linux上写轮询的时候，遇见的err。
block.c: In function ‘main’:
block.c:20:5: error: a label can only be part of a statement and a declaration is not a statement
     char buf[20];
     ^
block.c:21:5: error: expect]]></description><category></category></item><item><title><![CDATA[VMware Workstation和Device / Credential Guard不兼容问题解决]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/106679923</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/106679923</guid><author>SC_king</author><pubDate>Thu, 11 Jun 2020 08:42:30 +0800</pubDate><description><![CDATA[具体报错：
VMware Workstation和Device / Credential Guard不兼容。禁用Device / Credential Guard后，可以运行VMware Workstation。
解决：在命令行窗口中（需要管理员权限）该命令，重启计算机即可。

bcdedit /set hypervisorlaunchtype off

重新开启：

bcdedit /set hypervisorlaunchtype auto


...]]></description><category></category></item><item><title><![CDATA[Linux 多进程拷贝]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/106462159</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/106462159</guid><author>SC_king</author><pubDate>Sun, 31 May 2020 21:57:26 +0800</pubDate><description><![CDATA[仅供本人参考，没有原理介绍，谨慎阅读

利用Linux系统提供的一系列函数实现多进程拷贝命令。实现的时候由于对进程控制太过生硬，一直出现莫名其妙的问题。最后参考了其他人是如何在fork后控制子进程的流程的，终于完成了。
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;unistd.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;sys/mman.h&gt;
#include &lt;sy.]]></description><category></category></item><item><title><![CDATA[使用mmap匿名映射时出现的宏未定义]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/106456813</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/106456813</guid><author>SC_king</author><pubDate>Sun, 31 May 2020 16:25:15 +0800</pubDate><description><![CDATA[anonymouse_mmap.c: In function ‘main’:
anonymouse_mmap.c:27:73: error: ‘MAP_ANO’ undeclared (first use in this function)
     char* mm = mmap(NULL, MAPSIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANO, -1, 0);
                                             ]]></description><category></category></item><item><title><![CDATA[win 10 VS code Linux远程开发遇见的BUG]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/106319373</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/106319373</guid><author>SC_king</author><pubDate>Sun, 24 May 2020 19:26:38 +0800</pubDate><description><![CDATA[错误

[18:03:16.473] Log Level: 2
[18:03:16.480] remote-ssh@0.51.0
[18:03:16.480] win32 x64
[18:03:16.483] SSH Resolver called for "ssh-remote+9.134.115.130", attempt 1
[18:03:16.484] SSH Resolver called for host: 9.134.115.130
[18:03:16.484] Setting up SSH ]]></description><category></category></item><item><title><![CDATA[对于C++编译器命名粉碎规则（name mangling）机制的实验]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/106224232</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/106224232</guid><author>SC_king</author><pubDate>Tue, 19 May 2020 22:17:44 +0800</pubDate><description><![CDATA[编译器版本

测试案例
#include &lt;iostream&gt;
#include &lt;string&gt;

using std::string;
using std::cout;
using std::endl;


void print(int a) //_Z5printi
{

}

double print(double,double,int,int) //_Z5printddii
{
        return 0;
}

int print(int , int ,double,]]></description><category></category></item><item><title><![CDATA[2020数字中国创新大赛虎符网络安全赛RE——game WP]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/105650520</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/105650520</guid><author>SC_king</author><pubDate>Tue, 21 Apr 2020 09:23:46 +0800</pubDate><description><![CDATA[阅读字节码后，首先定义了三个列表，arr0,arr1,arr2。
主函数逻辑大致如下(伪代码形式给出)：
获取输入，然后依次调用4个check函数对输入进行check，如果其中任何一个不通过，返回失败。
分别查阅4个check函数。4个函数翻译过后，整理出其关键运算处(用伪代码形式)，推测出其作用。
check0:字符ASCII值必须在32~127即可打印字符
check1:长度校验，可以爆破得f...]]></description><category></category></item><item><title><![CDATA[Androidkiller回编译遇见的问题]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/105458620</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/105458620</guid><author>SC_king</author><pubDate>Sat, 11 Apr 2020 20:16:48 +0800</pubDate><description><![CDATA[问题如下
当前 Apktool 使用版本：apktool_2.3.4.jar
正在编译 APK，请稍等...
&gt;I: Using Apktool 2.3.4
&gt;I: Smaling smali folder into classes.dex...
&gt;I: Building resources...
&gt;W: fakeLogOpen(/dev/log_crash) failed...]]></description><category></category></item><item><title><![CDATA[LeetCode之二分查找]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/105376725</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/105376725</guid><author>SC_king</author><pubDate>Tue, 07 Apr 2020 23:22:05 +0800</pubDate><description><![CDATA[852. 山脉数组的峰顶索引


思路：一开始理解错误了…仔细看了下题目发现很简单嘛。可以直接扫描，也可以用效率更高的二分查找.

扫描：
class Solution {
public:
    int peakIndexInMountainArray(vector&lt;int&gt;&amp; A) {
        int res = 1;
        while (A[res - ...]]></description><category></category></item><item><title><![CDATA[真解函数调用约定]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/105314981</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/105314981</guid><author>SC_king</author><pubDate>Sat, 04 Apr 2020 22:25:55 +0800</pubDate><description><![CDATA[函数调用约定是什么

函数调用约定，是指当一个函数被调用时，函数的参数会被传递给被调用的函数和返回值会被返回给调用函数。函数的调用约定就是描述参数是怎么传递和由谁平衡堆栈的，当然还有返回值。			—《百度百科》

函数调用约定，从字面上来看，这是一个协议，一个应该被遵循的规范，那么谁来遵循呢？编译器。所谓函数调用约定指的就是当一个函数被调用时的乙烯类活动，包括参数入栈顺序，控制权的转交等。
函数调...]]></description><category></category></item><item><title><![CDATA[LeetCode刷题之分而治之]]></title><link>https://blog.youkuaiyun.com/SC_king/article/details/105314654</link><guid>https://blog.youkuaiyun.com/SC_king/article/details/105314654</guid><author>SC_king</author><pubDate>Sat, 04 Apr 2020 18:56:34 +0800</pubDate><description><![CDATA[面试题25. 合并两个排序的链表


思路：最令我困惑的是，几乎所有人都采取了减而治之的策略，最优解也是如此，但这题却分类在分而治之…
本题采用减而治之的策略，逐步蚕食问题的规模，最终可以得到问题的答案。不想解释了，简单题（对现在的我来说）。

迭代:
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNo...]]></description><category></category></item></channel></rss>